JDBC 连接MySQL实例详解

JDBC连接MySQL实例详解

什么是JDBC?

JDBC是Java Database Connectivity的缩写,是一种用于执行SQL语句的Java API。通过JDBC,我们可以直接连接到各种数据库,与之交互(如执行查询、更新等操作)。

JDBC连接MySQL的准备工作

在使用JDBC连接MySQL之前,需要先进行以下准备工作:
1. 下载MySQL的JDBC驱动(即JDBC的实现),并将其放入CLASSPATH中。我们可以在MySQL官网下载驱动,或者在Maven等仓库中获取它。下面演示的代码使用了Maven,pom.xml中需加入以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
  1. 创建MySQL数据库(如未创建)及数据表,并设置一个用于连接的MySQL用户及其密码。这里不再做详细介绍。

使用JDBC连接MySQL

接下来演示如何通过JDBC连接MySQL、创建表、插入、查询数据等操作。下面是一个简单的样例代码:

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.创建表
            String tableSql = "CREATE TABLE Employee " +
                    "(id INT not NULL, " +
                    " name VARCHAR(255), " +
                    " age INT, " +
                    " PRIMARY KEY ( id ))";
            stmt.executeUpdate(tableSql);

            // 5.插入数据
            String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (1, 'Tom', 20)";
            stmt.executeUpdate(insertSql);

            // 6.查询数据
            String selectSql = "SELECT id, name, age FROM Employee WHERE id=1";
            ResultSet rs = stmt.executeQuery(selectSql);
            if (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id=" + id + ", name=" + name + ", age=" + age);
            }

            // 7.关闭资源
            rs.close();
            stmt.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注:上述代码为演示使用,没有考虑异常、线程安全等问题,仅供参考。下面对代码的各个部分进行解释。

加载数据库驱动程序

JDBC是通过驱动程序来运行的,驱动程序的实现由各个数据库厂商提供。使用JDBC时,需要先加载该驱动程序。一般通过Class.forName()方法进行加载。

Class.forName("com.mysql.cj.jdbc.Driver");

上面的代码表示加载MySQL的驱动程序,使用的是MySQL Connector/J 8.0版本的驱动程序。

连接数据库

DriverManager.getConnection()方法用于创建连接。该方法需要三个参数:URL、用户名和密码。

Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

上面的代码中URL表示连接的目标数据库,其格式为:

jdbc:mysql://[host][:port]/[database]?[properties]

其中,[host]表示主机名,[port]表示端口号(MySQL默认使用3306端口),[database]表示连接的数据库名,[properties]则表示数据库的其他配置(如连接要用到的字符集)。上面的代码连接的数据库为名为testdb的数据库,用户名为testuser,密码为testpass的用户。

创建Statement

Statement表示执行SQL语句、查询并更新数据的对象,通过连接创建即可。例如:

Statement stmt = conn.createStatement();

上述代码创建了一个Statement对象stmt,以便后续执行SQL语句。

创建表

使用SQL语句创建表:

String tableSql = "CREATE TABLE Employee " +
                    "(id INT not NULL, " +
                    " name VARCHAR(255), " +
                    " age INT, " +
                    " PRIMARY KEY ( id ))";
stmt.executeUpdate(tableSql);

上述代码表示创建了一个名为Employee的表,包含id、name、age三个字段,其中id为主键(PRIMARY KEY)。

插入数据

使用SQL语句向Employee表中插入一行数据:

String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (1, 'Tom', 20)";
stmt.executeUpdate(insertSql);

上述代码表示向Employee表中插入了一行数据,id为1,name为Tom,age为20。

查询数据

使用SQL语句查询Employee表中id为1的记录:

String selectSql = "SELECT id, name, age FROM Employee WHERE id=1";
ResultSet rs = stmt.executeQuery(selectSql);
if (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");
    System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}

上述代码表示查询Employee表中id等于1的记录,并将查询结果输出到控制台上。

关闭资源

在使用JDBC过程中,需要注意关闭资源,释放连接。例如:

rs.close();
stmt.close();
conn.close();

上述代码依次关闭ResultSet、Statement和Connection对象,以释放与数据库的连接。

至此,我们就完成了一个简单的JDBC连接MySQL实例的操作。在实际应用中,还需要注意异常处理、资源释放、线程安全等问题。

示例说明

下面是两个使用JDBC连接MySQL的示例说明。

示例1:从MySQL数据库中读取数据,输出到控制台

import java.sql.*;

public class ReadFromDB {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.查询数据
            String selectSql = "SELECT id, name, age FROM Employee";
            ResultSet rs = stmt.executeQuery(selectSql);
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id=" + id + ", name=" + name + ", age=" + age);
            }

            // 5.关闭资源
            rs.close();
            stmt.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码演示了如何从MySQL数据库中读取Employee表中的数据,并将结果输出到控制台上。

示例2:向MySQL数据库中插入数据

import java.sql.*;

public class WriteToDB {
    public static void main(String[] args) {
        try {
            // 1.加载数据库驱动程序
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.连接数据库
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/testdb",
                    "testuser",
                    "testpass");

            // 3.创建Statement
            Statement stmt = conn.createStatement();

            // 4.插入数据
            String insertSql = "INSERT INTO Employee " +
                    "(id, name, age) " +
                    "VALUES (2, 'Mary', 25)";
            stmt.executeUpdate(insertSql);

            // 5.关闭资源
            stmt.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码演示了如何向MySQL数据库的Employee表中插入一行数据,该行数据的id为2,name为Mary,age为25。

参考资料

  1. JDBC Tutorial
  2. MySQL Connector/J

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC 连接MySQL实例详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 浅谈MySQL大表优化方案

    浅谈MySQL大表优化方案 在使用MySQL时,随着数据量的逐渐增大,我们可能会面临MySQL大表的优化问题。本文将介绍几种常见的MySQL大表优化方案,以及相应的示例说明。 优化方案一:水平分表 水平分表是将一张大表拆分成多张小表,各个小表之间的结构完全相同,但是它们分别存储不同的数据。通过水平分表,可以将表的行数分散到多个物理表中,从而减少单张表的数据量…

    database 2023年5月19日
    00
  • 零基础之Node.js搭建API服务器的详解

    下面是“零基础之Node.js搭建API服务器的详解”的完整攻略: 介绍 本文主要讲解如何使用Node.js搭建一个简单的API服务器,使用的工具有Express和MongoDB,主要内容包括: 安装Node.js和MongoDB 使用Express快速生成项目框架 定义API接口 连接数据库 编写API接口的实现 测试API接口 步骤 1. 安装Node.…

    database 2023年5月22日
    00
  • mysql 存储过程详解

    MySQL 存储过程详解 什么是 MySQL 存储过程 MySQL 存储过程是一种可以存储在 MySQL 数据库中的一组 SQL 语句,它们可以在需要时被多次调用。这些 SQL 语句被组织在一起并赋予一个名字,以便在需要时可以轻松地执行它们。 MySQL 存储过程通常用于封装特定的功能模块。通过使用存储过程,可以简化代码,提高代码的可重用性和可维护性,并提高…

    database 2023年5月22日
    00
  • CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

    下面是CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中的完整攻略。 1. 准备工作 在开始之前,我们需要先进行一些准备工作。 1.1 安装必要的软件 首先,我们需要安装一些必要的软件,包括mysqldump、tar和ftp等。可以使用以下命令进行安装: yum install mysql mysql-server mysql-…

    database 2023年5月22日
    00
  • MySQL如何保证备份数据的一致性详解

    MySQL是一款常用的数据库管理系统,备份数据对于确保数据安全非常重要。保证备份数据的一致性可以避免备份数据与原始数据不一致,从而降低数据的可靠性。以下是MySQL如何保证备份数据的一致性的完整攻略。 一、一致性备份 MySQL提供了多种备份方式,例如物理备份和逻辑备份等。其中,一致性备份是指备份的过程中没有对数据进行修改所保证的备份。MySQL通过加锁的方…

    database 2023年5月22日
    00
  • 简单了解MYSQL数据库优化阶段

    介绍一下“简单了解MYSQL数据库优化阶段”的攻略。 什么是MYSQL数据库优化阶段 MYSQL是一个常用的关系型数据库,由于数据量和访问量不断增加,会导致MYSQL数据库变慢,这时就需要进行MYSQL数据库优化。数据库优化是一个持续不断的过程,主要包括以下几个阶段: 阶段1:数据库架构调整 在数据量不断增加的情况下,数据库的架构也需要进行调整。比如可以采用…

    database 2023年5月19日
    00
  • mysql多表联合查询返回一张表的内容实现代码

    实现mysql多表联合查询中返回一张表的内容,可以通过使用UNION ALL操作符,将多个SELECT语句的结果集组合成一个结果集,最后将所有的查询结果拼成一个表。 下面是具体的实现步骤: 找到需要联合查询的多张表,根据关联字段进行连接操作(JOIN),例如连接表A和表B: SELECT A.*, B.* FROM table_A A INNER JOIN …

    database 2023年5月22日
    00
  • 在Oracle数据库中同时更新两张表的简单方法

    对于在Oracle数据库中同时更新两张表的简单方法,可以采用以下几种方式实现。 使用触发器 在数据库中创建触发器,当第一张表被修改时,自动更新第二张表的对应数据。下面是一个示例: CREATE OR REPLACE TRIGGER update_second_tableAFTER INSERT OR UPDATE OR DELETE ON first_tab…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部