jdbc执行insert、update、delete操作应使用preparedstatement的executeupdate()方法,返回受影响行数;需预编译sql防注入、手动管理事务、正确关闭资源,并避免误用executequery()或参数化表名字段名。

Java 中用 JDBC 执行 INSERT、UPDATE、DELETE 操作,核心是使用 PreparedStatement(推荐)或 Statement,调用 executeUpdate() 方法。它返回一个 int 值,表示受影响的行数,不是查询结果集。
准备连接和预编译语句
先获取数据库连接,再用 Connection.prepareStatement() 创建带占位符的 SQL 语句。这样能防止 SQL 注入,也支持参数复用。
例如插入用户:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "张三"); ps.setString(2, "zhangsan@example.com"); int rows = ps.executeUpdate(); // 返回 1 表示成功插入一行
执行 UPDATE 和 DELETE 操作
写法结构一致:拼好 SQL → 设置参数 → 调用 executeUpdate()。
- UPDATE 示例:
"UPDATE users SET email = ? WHERE id = ?",按顺序设邮箱和 ID - DELETE 示例:
"DELETE FROM users WHERE status = ?",可批量删符合条件的记录 - 注意 WHERE 条件必须写清楚,否则可能误删/误改全部数据
事务控制与资源释放
增删改操作通常需要事务保障。手动关闭自动提交,显式 commit 或 rollback:
-
conn.setAutoCommit(false)关闭自动提交 - 执行完所有 update 后调用
conn.commit() - 出异常时调用
conn.rollback() - 最后务必在
finally或 try-with-resources 中关闭PreparedStatement和Connection
常见注意事项
避免踩坑的关键点:
- 不要用
executeQuery()执行 INSERT/UPDATE/DELETE,会抛异常 - 主键自增时,可用
prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)获取刚插入的 ID - 批量操作优先用
addBatch()+executeBatch(),比循环单条快得多 - SQL 中字段名和表名不建议用问号占位,只对值做参数化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










