详解 Java 使用 JDBC 连接 MySQL 数据库
概述
在 Java 开发中,经常需要与 MySQL 数据库进行交互,而实现这个过程需要使用到 JDBC。JDBC(Java Database Connectivity)是 Java 提供的一套用于访问关系型数据库的接口,本文将详细讲解在 Java 中使用 JDBC 连接 MySQL 数据库的完整攻略。
步骤
1. 加载驱动程序
在使用 JDBC 连接 MySQL 数据库之前,需要先加载驱动程序,即将 JDBC 驱动程序加载到内存中,以便 Java 应用程序能够访问数据库。
Java8 以后,可以省略掉加载驱动的步骤,因为 JDBC 会自动加载驱动程序,不过为了兼容性,还是推荐显示加载驱动程序。
Class.forName("com.mysql.cj.jdbc.Driver");
2. 建立连接
与 MySQL 数据库建立连接需要连接的三个要素:URL、用户名和密码。
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);
其中 url
的格式为 jdbc:mysql://host:port/databaseName,useUnicode
和 characterEncoding
是用来解决中文乱码问题的,serverTimezone
的意义是时区设置,如果不设置可能会出现时区不一致的问题。
3. 执行 SQL 语句
连接成功后就可以执行 SQL 语句了,常见的 SQL 语句有增加、删除、修改和查询。
增加数据
String sql = "INSERT INTO users(name, age) VALUES(?,?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
ps.setInt(2, 25);
int result = ps.executeUpdate();
这里使用了 JDBC 预处理语句 PreparedStatement
,使用 setString
和 setInt
方法设置参数,executeUpdate
方法执行语句并返回受影响的行数。
删除数据
String sql = "DELETE FROM users WHERE name = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
int result = ps.executeUpdate();
这里使用了 PreparedStatement
,使用 setString
方法设置参数,执行语句也是调用 executeUpdate
方法。
修改数据
String sql = "UPDATE users SET age = ? WHERE id = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 30);
ps.setInt(2, 1);
int result = ps.executeUpdate();
这里使用了 PreparedStatement
,使用 setInt
和 setString
方法设置参数,执行语句也是调用 executeUpdate
方法。
查询数据
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "张三");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
int age = rs.getInt(3);
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
这里同样使用了 PreparedStatement
,使用 setString
方法设置参数,执行语句使用 executeQuery
方法,并使用 ResultSet
对象遍历结果集,将结果集中的每条记录取出来并输出。
4. 关闭连接
完成 MySQL 数据库的访问后必须关闭连接。
if (connection != null) {
connection.close();
}
示例
示例 1:增加数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class AddUserData {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO users(name, age) VALUES(?,?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "李四");
ps.setInt(2, 28);
int result = ps.executeUpdate();
System.out.println("成功插入 " + result + " 条记录");
if (connection != null) {
connection.close();
}
}
}
示例 2:查询数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class QueryUserData {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM users WHERE age > ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, 25);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
int age = rs.getInt(3);
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
if (connection != null) {
connection.close();
}
}
}
总结
本文详细讲解了在 Java 中使用 JDBC 连接 MySQL 数据库的完整攻略,并提供了两个示例,希望能够帮助大家更好地理解和运用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java使用JDBC连接MySQL数据库 - Python技术站