jdbc 中执行 delete 操作需用 preparedstatement 防注入:1. sql 用 ? 占位;2. setxxx() 绑定参数后 executeupdate() 执行并返回影响行数;3. 返回 0 表示无匹配记录,异常才代表失败;4. 须用 try-with-resources 关闭资源。

在 Java 的 JDBC 中执行 DELETE 操作,核心是通过 PreparedStatement 发送带参数的 SQL 删除语句,确保安全、高效且避免 SQL 注入。
1. 编写带占位符的 DELETE SQL 语句
使用 ? 占位符代替具体值,不拼接字符串。例如删除用户表中指定 ID 的记录:
2. 使用 PreparedStatement 执行删除
相比 Statement,PreparedStatement 能预编译、防注入、支持参数绑定:
- 调用
connection.prepareStatement(sql)创建预编译语句 - 用
setXxx(1, value)绑定参数(索引从 1 开始) - 调用
executeUpdate()执行 —— 它返回受影响的行数(int 类型)
3. 正确处理结果与异常
executeUpdate() 返回值很关键:
- 返回 0 表示没匹配到任何记录(不是错误,只是没删成)
- 返回 1 或更大 表示成功删除对应行数
- 抛出
SQLException才代表执行失败(如连接断开、语法错、权限不足)
建议检查返回值做业务判断,比如:
if (rowsAffected == 0) { throw new RuntimeException("未找到要删除的记录"); }
4. 记得关闭资源或使用 try-with-resources
Connection、PreparedStatement 都需及时释放。推荐用 try-with-resources 自动关闭:
try (PreparedStatement ps = conn.prepareStatement(sql)) {ps.setLong(1, userId);
int rows = ps.executeUpdate();
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











