java jdbc 通关演练需动手跑通“连—查—改—管—防”五步:确保连接成功(检查服务、url、驱动、异常堆栈);理解 resultset 游标机制;强制使用 preparedstatement 防注入并校验返回值;严格事务控制与资源逆序关闭。

Java JDBC 通关演练不是背概念,而是动手把“连—查—改—管—防”五个关键动作跑通一遍。核心是边写边错、边错边调,直到每一步都清楚为什么这么写、不这么写会出什么问题。
从建库到连上:先让 Connection 真正活起来
别跳过这步。很多卡点其实出在连接本身:
- 确认 MySQL 已启动,且能用命令行或 Navicat 正常登录;
- URL 写全参数,比如 jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC,少一个问号或拼错 timezone 都会报“Communications link failure”;
- 驱动类名必须匹配版本:MySQL 8+ 用 com.mysql.cj.jdbc.Driver,5.x 用 com.mysql.jdbc.Driver;
- 首次运行加 try-catch,打印异常堆栈,别只写 e.printStackTrace() 就完事——重点看 Caused by 那一行。
查数据不只写 executeQuery:学会看 ResultSet 的游标逻辑
很多人写完 rs.next() 就开始取字段,但没意识到 ResultSet 默认是“不可滚动、只读”的光标:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- rs.next() 返回 true 才代表有下一行,第一次调用就是移到第一行;
- 用 rs.getString("name") 比 rs.getString(2) 更安全,字段名不易错位;
- 如果要反复遍历结果集,得用 createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY) 创建 Statement;
- 别忘了检查 rs.isBeforeFirst() 或 rs.isAfterLast(),调试时能快速定位游标位置。
增删改别硬拼 SQL:用 PreparedStatement 防注入也提性能
哪怕只是练习,也强制自己写 PreparedStatement:
- SQL 字符串里用 ? 占位,如 "INSERT INTO user(name, age) VALUES(?, ?)";
- 按顺序调用 setString(1, "张三")、setInt(2, 25),序号从 1 开始,不是 0;
- executeUpdate() 返回 int,值为受影响行数——插入成功是 1,更新没匹配到记录是 0,这个返回值必须检查;
- 批量操作用 addBatch() + executeBatch(),比循环 executeUpdate() 快几倍。
事务和资源释放:不是可选项,是必练项
真实项目里,漏关 Connection 或忘 commit 是高频故障源:
- 手动控制事务:conn.setAutoCommit(false) → 执行多条 SQL → conn.commit() 或 conn.rollback();
- 资源关闭严格按 rs → stmt → conn 逆序,且每个 close() 都包 try-catch(或用 try-with-resources);
- 写个工具方法 closeQuietly(ResultSet, Statement, Connection),避免 finally 块里一堆 if 判空;
- 故意在 update 后抛异常,验证 rollback 是否真生效——这是检验事务理解的硬标准。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










