要实现Java与MySQL数据库的连接,需完成环境准备、驱动配置、代码编写及异常处理等步骤,以下是具体操作流程和关键注意事项。
环境准备
-
MySQL数据库安装与配置
确保已安装MySQL数据库(建议5.7及以上版本),并创建测试数据库及表,通过MySQL命令行执行:CREATE DATABASE test_db; USE test_db; CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT); INSERT INTO users (name, age) VALUES ("张三", 25), ("李四", 30);记录数据库连接信息:主机名(默认localhost)、端口(默认3306)、用户名(默认root)及密码。
-
Java开发环境
安装JDK(建议1.8及以上版本)并配置环境变量,确保可通过java -version命令验证安装成功。
JDBC驱动配置
Java通过JDBC(Java Database Connectivity)规范连接MySQL,需加载MySQL官方提供的JDBC驱动。
-
驱动下载
访问MySQL官网下载Connector/J驱动(如mysql-connector-java-8.0.33.jar),或通过Maven/Gradle依赖管理工具自动下载。 -
项目依赖配置
- Maven项目:在
pom.xml中添加依赖:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> - Gradle项目:在
build.gradle中添加:implementation 'mysql:mysql-connector-java:8.0.33'
若使用手动下载的JAR包,需将其添加到项目的类路径(Classpath)中。
- Maven项目:在
Java连接MySQL代码实现
连接过程分为“加载驱动—建立连接—执行SQL—处理结果—关闭资源”五个步骤,以下为完整示例代码:
import java.sql.*;
public class MySQLConnectionDemo {
public static void main(String[] args) {
// 1. 定义数据库连接信息
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "your_password"; // 替换为实际密码
// 2. 声明JDBC对象(Connection、Statement、ResultSet)
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 3. 加载JDBC驱动(MySQL 8.0+驱动类名)
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("驱动加载成功");
// 4. 建立数据库连接
conn = DriverManager.getConnection(url, username, password);
System.out.println("数据库连接成功");
// 5. 创建Statement对象(用于执行SQL)
stmt = conn.createStatement();
String sql = "SELECT id, name, age FROM users";
rs = stmt.executeQuery(sql); // 执行查询SQL
// 6. 处理结果集
System.out.println("查询结果:");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.printf("ID: %d, 姓名: %s, 年龄: %d%n", id, name, age);
}
} catch (ClassNotFoundException e) {
System.err.println("驱动加载失败:" + e.getMessage());
} catch (SQLException e) {
System.err.println("数据库操作异常:" + e.getMessage());
} finally {
// 7. 关闭资源(按ResultSet、Statement、Connection顺序关闭)
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
System.out.println("资源关闭成功");
} catch (SQLException e) {
System.err.println("资源关闭异常:" + e.getMessage());
}
}
}
}
关键注意事项
-
驱动类名差异
MySQL 5.x版本驱动类名为com.mysql.jdbc.Driver,8.x版本改为com.mysql.cj.jdbc.Driver,需根据驱动版本选择。 -
URL参数配置
useSSL=false:禁用SSL连接(开发环境可关闭,生产环境建议开启)。serverTimezone=UTC:设置时区,避免“时区错误”异常。characterEncoding=UTF-8:指定字符集,防止中文乱码。
-
SQL注入防护
避免直接拼接SQL字符串,推荐使用PreparedStatement预处理语句(示例中使用Statement仅作演示)。String sql = "SELECT * FROM users WHERE name = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "张三"); rs = pstmt.executeQuery();
-
连接池优化
高并发场景下,频繁创建/关闭连接会导致性能问题,建议使用HikariCP、Druid等连接池管理数据库连接,例如HikariCP配置示例:HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/test_db"); config.setUsername("root"); config.setPassword("your_password"); HikariDataSource ds = new HikariDataSource(config); Connection conn = ds.getConnection(); -
异常处理与资源释放
数据库操作可能抛出SQLException,需通过try-catch-finally捕获异常并确保资源(ResultSet、Statement、Connection)关闭,避免资源泄漏,推荐使用Java 7+的try-with-resources语句自动关闭资源:try (Connection conn = DriverManager.getConnection(url, username, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) { // 处理结果集 } catch (SQLException e) { e.printStackTrace(); }
通过以上步骤,即可实现Java与MySQL数据库的稳定连接,实际开发中,还需根据业务需求调整SQL逻辑,并结合连接池、事务管理机制优化性能。










