当前位置: 首页 > news >正文

JDBC 进阶 API 补充

六、JDBC 进阶 API 补充

  1. 获取自增主键(新增后拿到数据库自增 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); }
  1. 批处理 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(); // 清空批任务
  1. JDBC 常用异常

  • ClassNotFoundException:驱动类找不到(jar 包缺失、类名写错)

  • SQLSyntaxErrorException:SQL 语法错误

  • SQLInvalidAuthorizationSpecException:账号 / 密码错误

  • CommunicationsException:IP、端口错误,数据库未启动


七、关键总结(面试 / 考点)

  1. 六大核心 API:DriverDriverManagerConnectionStatementPreparedStatementResultSet

  2. 优先使用 PreparedStatement:防 SQL 注入、预编译高效

  3. 占位符?索引从 1 开始,不能加单引号

  4. MySQL8 必须配置serverTimezone时区参数

  5. 资源关闭顺序:ResultSet > Statement > Connection

  6. JDBC 事务默认自动提交,手动事务需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?useSSL=false&serverTimezone=UTC"; 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(); } } }
http://www.jsqmd.com/news/1125649/

相关文章:

  • hypermesh两个网格参数解析
  • mcntools - Minecraft 模组 JAR 文件硬编码翻译工具
  • 备孕辅酶Q10选还原型还是氧化型?高仕星辅酶Q10成分全解
  • 从代码补全到工作空间智能体:Codex范式重塑AI编程工作流
  • 【Linux驱动开发】第23天:spi_driver 的 probe / remove 函数实现规范
  • 牛计数数据集 | 3300张YOLO智慧畜牧数据集
  • 汽车行业变革:中国车企速度领先,欧洲开源联盟能否逆袭?
  • GitHub 热榜项目 - 周榜(2026-07-04)
  • 技术专访|罗长才:深度拆解GEO与区块链密钥体系、账户模型的双向赋能落地逻辑
  • 企业微信会话存档SDK实战——跨平台部署与动态库加载避坑指南
  • Shell的理解
  • 机器人5公里长跑背后的技术:强化学习与模型预测控制如何实现动态平衡
  • 毕业季全网刚需,2026 新版 AI 论文软件盘点,兼顾写作、降重、模拟审稿
  • AI 前沿日报 | 2026年7月4日
  • 腾讯云CVM上一键部署CubeSandbox,线下实操初体验
  • 别踩2026视频转换成文字付费误区:我实操总结的控成本实用经验
  • 【Qwt 7.0 系列】坐标轴与刻度系统 —— 刻度引擎、网格、图例与刻度朝内
  • YOLOv8与卡尔曼滤波融合:构建实时目标检测与跟踪系统
  • 【案例教程】基于GMTSAR合成孔径雷达干涉测量InSAR数据处理、形变信息提取与分析
  • Codex桌面客户端:零代码接入DeepSeek等大模型,打造本地AI助手
  • 英伟达AI Compute Partnership:从“卖铲人“到“收租人“的算力金融化革命
  • yolov26改进 | 主干/Backbone篇 | 轻量级移动端网络ShuffleNetv1(附代码+修改教程)
  • 如何快速掌握SysML v2:面向系统工程师的终极MBSE建模指南
  • CubeSandbox 快照、克隆、回滚部署实操体验|OC城市行深圳站
  • OpenCode 实战技巧:从入门到高效开发
  • 开题高效撰写新解法:okbiye 一站式 AI 开题功能化解科研入门难题
  • 我在腾讯云 CVM 上实操 CubeSandbox:从部署到体验快照、克隆和回滚分享
  • 剑星 全内容 中文全DLC 脱离虚拟机 即点即玩
  • 图像和视频处理的核心概念(在图像上画矩形)
  • 好无聊上班的一天