java jdbc 通关核心是练成“连得上、查得出、改得准、关得稳”四件事的肌肉记忆,需从最简5行代码+1张表起步,逐步验证异常处理、preparedstatement防注入、批量操作、事务控制(innodb引擎)及try-with-resources资源安全释放。

Java JDBC 通关不是背概念,而是把“连得上、查得出、改得准、关得稳”这四件事练成肌肉记忆。核心不在代码量多,而在每一步的意图清晰、错误可定位、资源不泄漏。
从最简连接开始,先跑通再拆解
别一上来就写工具类或封装。用一个 5 行关键代码 + 1 张表 启动:
- 建一张
user(id,name,age)表(MySQL 或 H2 内存库都行) - 只写:加载驱动(MySQL 8+ 可省)、
DriverManager.getConnection()、createStatement()、executeQuery()、遍历ResultSet - 成功打印出数据,立刻停——此时你已掌握 JDBC 最小闭环
- 下一步:故意改错 URL 或密码,观察报什么异常;再删掉
rs.next()直接rs.getString(1),看空指针怎么冒出来
重点练 PreparedStatement 防 SQL 注入
用 Statement 拼字符串是“假练”,PreparedStatement 才是真实场景刚需:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 把登录验证逻辑写两版:一版用
"SELECT * FROM user WHERE name='" + name + "'",输' OR '1'='1看是否绕过 - 另一版改用
preparedStatement.setString(1, name),同样输入,结果应为查不到 - 再试批量插入:用
addBatch()+executeBatch()插 100 条,对比单条执行耗时
事务控制必须动手验证
光看 setAutoCommit(false) 和 commit() 没用,得亲手制造失败:
- 写一个转账方法:从 A 扣钱 → 到 B 加钱,中间加一行
int i = 1 / 0; - 不加事务:A 扣了钱,B 没加上,钱消失
- 加事务:捕获异常后调
rollback(),A 和 B 都不变 - 注意:MySQL 表引擎必须是 InnoDB,MyISAM 不支持事务
资源释放不能靠“记得”,要靠结构保证
手动 close() 容易漏,现代写法只有一种推荐:
- 全部用 try-with-resources,Connection、Statement、ResultSet 三者嵌套声明
- 哪怕某一个 close() 抛异常,其余仍会执行,不会导致连接泄漏
- 示例:
try (Connection conn = ...; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(...)) { ... } - 拒绝在
finally里手写 close,那是 JDK 7 以前的老习惯
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










