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>
- 创建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。
参考资料
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC 连接MySQL实例详解 - Python技术站