jdbc 更新操作核心是 executeupdate(),需用 preparedstatement 防注入、设参数后执行并获影响行数,资源须按 pstmt.close()→conn.close() 顺序关闭或用 try-with-resources。

Java 中用 JDBC 执行数据更新操作,核心是调用 executeUpdate() 方法,它适用于 INSERT、UPDATE、DELETE 这类不返回结果集的 SQL 语句。关键不在“能不能做”,而在于“怎么写更安全、资源怎么关才不漏”。下面分几步说清楚。
准备连接和预编译语句
更新前必须先连上数据库,并推荐使用 PreparedStatement(而非 Statement),因为它能防 SQL 注入、支持动态参数:
- 加载驱动(MySQL 8+ 可省略,但保留更兼容):
Class.forName("com.mysql.cj.jdbc.Driver"); - 用
DriverManager.getConnection()获取Connection对象 - 调用
connection.prepareStatement("UPDATE user SET name = ? WHERE id = ?")创建预编译对象
设置参数并执行更新
占位符 ? 按从左到右顺序编号,用对应类型方法赋值:
-
pstmt.setString(1, "张三")→ 填第一个? -
pstmt.setInt(2, 101)→ 填第二个? - 调用
pstmt.executeUpdate()执行,返回受影响行数(int 类型,不是布尔值)
例如:更新成功时返回 1,条件不匹配时返回 0,可据此判断是否真改到了数据。
务必关闭资源,顺序不能错
Connection 和 PreparedStatement 都是重量级资源,不关会引发连接泄漏:
- 必须按“后开先关”顺序:先
pstmt.close(),再conn.close() - 推荐用
try-with-resources自动管理,代码更简洁、异常下也保证关闭 - 不要在
catch中吞掉异常后跳过关闭——即使出错也要释放连接
常见坑与建议
实际开发中容易忽略的细节:
- SQL 里别写拼接字符串(如
"UPDATE ... SET name = '" + name + "'"),极易被注入 - 事务控制:如果一次更新涉及多条语句,记得调用
conn.setAutoCommit(false),出错时rollback() - 字段类型要匹配:比如数据库是
DECIMAL(10,2),就该用setBigDecimal,避免精度丢失
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











