JDBC 进阶 API 补充

📅 2026/7/5 3:03:17
JDBC 进阶 API 补充
六、JDBC 进阶 API 补充获取自增主键新增后拿到数据库自增 ID场景插入数据后需要获取主键自增值。// 创建对象时指定返回自增主键 String sql insert into user(name) values(?); pstmt conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, 王五); pstmt.executeUpdate(); // 获取自增主键结果集 ResultSet keys pstmt.getGeneratedKeys(); if(keys.next()){ int id keys.getInt(1); System.out.println(自增主键ID id); }批处理 Batch批量增删改大量数据插入时使用大幅提升效率String sql insert into user(name) values(?); pstmt conn.prepareStatement(sql); // 循环添加参数 加入批处理 for (int i 0; i 1000; i) { pstmt.setString(1, 用户 i); pstmt.addBatch(); // 添加到批任务 } pstmt.executeBatch(); // 批量执行 pstmt.clearBatch(); // 清空批任务JDBC 常用异常ClassNotFoundException驱动类找不到jar 包缺失、类名写错SQLSyntaxErrorExceptionSQL 语法错误SQLInvalidAuthorizationSpecException账号 / 密码错误CommunicationsExceptionIP、端口错误数据库未启动七、关键总结面试 / 考点六大核心 APIDriver、DriverManager、Connection、Statement、PreparedStatement、ResultSet优先使用 PreparedStatement防 SQL 注入、预编译高效占位符?索引从 1 开始不能加单引号MySQL8 必须配置serverTimezone时区参数资源关闭顺序ResultSet Statement ConnectionJDBC 事务默认自动提交手动事务需setAutoCommit(false)八、工具类封装实战常用把重复的加载驱动、获取连接、释放资源封装成工具类项目标准写法import java.sql.*; public class JdbcUtil { // 静态常量 private static final String DRIVER com.mysql.cj.jdbc.Driver; private static final String URL jdbc:mysql://localhost:3306/testdb?useSSLfalseserverTimezoneUTC; private static final String USER root; private static final String PWD 123456; // 静态代码块只加载一次驱动 static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PWD); } // 释放资源重载方法 public static void close(Connection conn, PreparedStatement pstmt) { close(conn, pstmt, null); } public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs ! null) rs.close(); if (pstmt ! null) pstmt.close(); if (conn ! null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }