jdbc连接数据库增删改查核心四步:加载驱动、获取连接、执行sql、关闭资源;需配置mysql驱动依赖,url带时区与编码,增删改用executeupdate(),查询用executequery()并安全遍历resultset,资源关闭推荐try-with-resources。

用JDBC连接数据库并做增删改查,核心就四步:加载驱动、获取连接、执行SQL、关闭资源。不复杂,但每步都有关键细节,漏掉容易报错或资源泄漏。
准备驱动和连接参数
先确保项目里有 MySQL 的 JDBC 驱动(如 mysql-connector-j 8.3.0),Maven 依赖写法:
连接 URL 要带时区和编码,否则中文乱码或时间出错:
-
URL 示例:
jdbc:mysql://localhost:3306/may7?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8 - 用户名/密码:按自己数据库实际填写(如 root / 111111)
- MySQL 8.x 可省略
Class.forName(),但保留更稳妥,兼容性好
执行增删改操作(INSERT/UPDATE/DELETE)
这类操作统一用 executeUpdate(),返回受影响行数,能直接判断是否成功:
- 用
Statement快速测试,比如插入学生:insert into student(name, sex, age) values('李明', '男', 20) - 生产环境强烈推荐
PreparedStatement,防 SQL 注入,还支持参数占位符(?) - 执行后检查返回值:若返回 0,说明没插入/更新任何记录,可能是条件不匹配或数据重复
执行查询操作(SELECT)
查询必须用 executeQuery(),返回 ResultSet,遍历时要用 rs.next() 移动游标:
- 字段取值别用硬编码索引(如
rs.getString(1)),优先用列名:rs.getString("name") - 注意空值处理,
rs.getString()可能返回null,避免直接调用.length()等方法 - 查询结果不用时及时释放,尤其大数据量下不关 ResultSet 会撑爆内存
安全关闭资源
Connection、Statement、ResultSet 都要关闭,顺序是ResultSet → Statement → Connection,推荐用 try-with-resources 自动管理:
- 手动关容易遗漏或异常打断,比如
conn.close()前抛异常,后面就关不了 - try-with-resources 写法简洁且保证执行:
try (Connection c = ...; Statement s = ...; ResultSet rs = ...) { ... } - 即使使用连接池(如 Druid),底层物理连接仍需正确归还,逻辑关闭不能省











