JDBC核心逻辑是四步:加载驱动、获取连接、执行SQL、释放资源;其中驱动通过SPI机制自动注册,连接URL含关键参数,PreparedStatement防注入,try-with-resources确保资源释放。

记 Java JDBC 名师点拨教程,关键不在抄笔记,而在抓主线、建联系、动手验证。真正能记住的,是那些你亲手跑通、出过错、再改对的步骤。
紧扣 JDBC 四步主干
JDBC 的核心逻辑就四件事,所有代码都围绕它展开: - 加载驱动:`Class.forName("com.mysql.cj.jdbc.Driver")` —— 告诉 JVM “我要用 MySQL 的实现”,本质是触发驱动类静态块注册自己 - 获取连接:`DriverManager.getConnection(url, user, pwd)` —— URL 里藏着关键参数(如 `useSSL=false`、`serverTimezone=Asia/Shanghai`),少一个可能连不上或乱码 - 执行 SQL:用 `Statement` 或更安全的 `PreparedStatement`,后者防 SQL 注入,带 `?` 占位符才生效 - 释放资源:`conn.close()`、`stmt.close()` 必须做;推荐用 `try-with-resources` 自动关闭,避免连接泄漏
别死记 URL 字符串,记住它的结构:jdbc:mysql://IP:端口/数据库名?参数1=值1&参数2=值2。参数不是装饰,每个都解决具体问题(时区、编码、SSL)。
把 SPI 和 JDBC 对着理解
名师点拨常提 SPI(Service Provider Interface),它正是 JDBC 能“换库不改代码”的底层机制: - `java.sql.Connection` 是 JDK 定义的接口,不写实现 - MySQL 驱动 jar 包里有 `com.mysql.cj.jdbc.ConnectionImpl`,实现了这个接口 - `DriverManager` 通过 SPI 机制,在 `META-INF/services/java.sql.Driver` 文件里自动发现并加载 MySQL 的驱动类 - 所以你换 Oracle,只换 jar 包 + 改 URL,其余代码全都不动
记 SPI 不是为了背概念,而是明白:JDBC 的解耦能力,来自“接口归 JDK 管、实现归厂商管”这一设计哲学。
用最小可运行代码锚定记忆
每次学完一个操作(查/插/删/改),立刻写一个**5 行核心 + 2 行打印**的极简版本,比如查询: ```java String sql = "SELECT name FROM t_book WHERE id = ?"; try (PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, 1); ResultSet rs = ps.executeQuery(); if (rs.next()) System.out.println(rs.getString("name")); } ```
不追求完整项目结构,先让这 5 行在你本地跑起来。出错就看报错信息——是 ClassNotFound?URL 写错?表不存在?——错误本身就在帮你强化关键节点。
对比记易混点
- executeUpdate() vs executeQuery():前者用于 insert/update/delete,返回影响行数(int);后者用于 select,返回 ResultSet(不能用它执行修改语句) - Statement vs PreparedStatement:前者拼字符串,快但危险;后者预编译+占位符,慢一丁点但安全,开发中应默认选它 - mysql-connector-java 5.x vs 8.x:驱动类名不同(`com.mysql.jdbc.Driver` → `com.mysql.cj.jdbc.Driver`),URL 中必须加 `serverTimezone`,否则报时区异常
把这些对比项做成小卡片,贴在 IDE 侧边栏,写代码前扫一眼,两周后自然进脑子。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











