Java JDBC连接数据库核心五步:加驱动(建议显式Class.forName)、写URL(含端口、编码、时区等参数)、建Connection、发SQL(Statement/PreparedStatement/ResultSet)、关资源(try-with-resources或finally手动关闭)。

Java 用 JDBC 连接数据库,核心是五步:加驱动、写地址、建连接、发 SQL、关资源。现在新版本大多能自动加载驱动,但理解每步作用,才能快速定位连接失败、乱码、超时等问题。
加载数据库驱动(可选但建议显式写)
驱动是 Java 和数据库之间的翻译器。不同数据库对应不同驱动类:
- MySQL 8.x → com.mysql.cj.jdbc.Driver
- MySQL 5.x → com.mysql.jdbc.Driver
- PostgreSQL → org.postgresql.Driver
- Oracle → oracle.jdbc.OracleDriver
- 华为 GaussDB/DWS → com.huawei.gauss200.jdbc.Driver
代码中写一句即可(JDBC 4.0+ 可省略,但显式写出更清晰):
Class.forName("com.mysql.cj.jdbc.Driver");拼写正确的 JDBC URL
URL 是连接的“门牌号”,格式固定:jdbc:子协议://主机:端口/数据库名?参数。关键细节不能错:
立即学习“Java免费学习笔记(深入)”;
- MySQL 默认端口是 3306,改过就得同步更新
- 中文乱码?补上 useUnicode=true&characterEncoding=UTF-8
- 时区报错?加上 serverTimezone=Asia/Shanghai 或 UTC
- SSL 警告?加 useSSL=false(开发环境可用,生产慎用)
示例(MySQL 8):
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
获取 Connection 并检查连通性
调用 DriverManager.getConnection() 建立连接,必须传入 URL、用户名、密码:
- 用户名密码错误、数据库没启动、防火墙拦截,都会在这里抛 SQLException
- 建议加 try-catch,并打印异常信息,而不是只输出“连接失败”
- 连接成功后,conn.isClosed() 返回 false,可做简单验证
典型写法:
Connection conn = DriverManager.getConnection(url, "root", "123456");执行 SQL 与处理结果
拿到 Connection 后,按需创建执行对象:
-
Statement:适合写死的 SQL(如
"SELECT * FROM user") - PreparedStatement:带 ? 占位符,防 SQL 注入,推荐用于含变量的查询或更新
- ResultSet:查询返回的结果集,用 rs.next() 移动指针,rs.getString("name") 取字段值
注意:update/delete/insert 用 executeUpdate(),返回影响行数;select 用 executeQuery(),返回 ResultSet。
务必关闭资源(Connection/Statement/ResultSet)
不关会耗尽连接池、导致数据库拒绝新连接。推荐用 try-with-resources 自动释放:
try (Connection conn = DriverManager.getConnection(url, u, p);Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user")) {
// 处理结果
} // 自动 close
如果不用 try-with-resources,必须在 finally 块里按 rs → stmt → conn 顺序手动 close。

















