java连接mysql需严格遵循驱动引入、连接建立、sql执行、结果处理、资源释放五步;关键包括匹配驱动类名、配置url参数(如servertimezone、usessl)、用try-with-resources自动关闭资源、使用preparedstatement防注入。

“Java MySQL 通关秘籍”不是一本官方教材,而是学习者对Java连接并操作MySQL全流程掌握程度的形象说法。它不靠玄学,靠的是驱动引入、连接建立、SQL执行、结果处理、资源释放这五个关键环节环环相扣。只要每一步踩准,就能稳定打通——不是“破”,而是“稳建、稳查、稳关”。
第一步:驱动必须对得上号
MySQL 8.0+ 和老版本驱动类名不同,用错就直接 ClassNotFoundException:
- MySQL 8.0 及以上 → com.mysql.cj.jdbc.Driver(带
cj) - MySQL 5.x → com.mysql.jdbc.Driver
- Maven 项目直接加依赖,不用手动放 jar:
mysql
mysql-connector-java
8.0.33 - 非 Maven 项目,jar 包要放进
lib/目录,并在 IDE 中右键 → “Add as Library”(Eclipse/IDEA 都需此步)
第二步:URL 参数不能少关键项
只写 jdbc:mysql://localhost:3306/dbname 很容易报时区或 SSL 错误。实际连接字符串建议带上:
-
serverTimezone=UTC(或
Asia/Shanghai)→ 避免时区报错 - useSSL=false → 开发环境禁用 SSL(生产环境应配证书)
- characterEncoding=utf8 → 防中文乱码
- 完整示例:
jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false&characterEncoding=utf8
第三步:Connection、Statement、ResultSet 必须成对关闭
不关会内存泄漏,尤其在循环或高频调用中。推荐用 try-with-resources(JDK 7+)自动释放:
- 传统写法易漏关:
conn.close(); stmt.close(); rs.close(); - 更稳妥写法:
try (Connection conn = DriverManager.getConnection(url, user, pwd);
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users");
ResultSet rs = ps.executeQuery()) {
// 处理结果
} // 自动关闭三者
第四步:用 PreparedStatement,别拼接 SQL
防止 SQL 注入是底线,同时提升可读性和执行效率:
- ❌ 错误示范:
"SELECT * FROM users WHERE name = '" + name + "'" - ✅ 正确写法:
String sql = "SELECT * FROM users WHERE name = ?";<br>ps.setString(1, name);
- 参数从 1 开始编号,类型要匹配(
setInt(2, age)、setDate(3, date))
真正卡住的,往往不是语法,而是驱动版本、URL 参数、资源未关、SQL 注入风险这四点。把它们列成检查清单,每次写 JDBC 代码前过一遍,比找“秘籍”更快通关。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











