使用JDBC修改表记录
修改表记录最好也使用 PreparedStatement,这样可以有效防止sql注入的问题。
完整代码
import java.sql.*;
public class Demo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");//注册JDBC驱动
String url = "jdbc:mysql://localhost:3306/tablename1?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true";
Connection conn = DriverManager.getConnection(url,"root","123321");
String sql = "update user set name = ? where id = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(1, "张无忌");//下标从1开始
statement.setInt(2, 1);
int res = statement.executeUpdate();//返回受影响的记录数
//记得要关闭连接
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
System.out.println("执行成功。");
}
}Code language: JavaScript (javascript)
补充说明
- 修改操作使用
update 表名 set 字段 = ? where 条件,条件必须明确,否则会更新整张表的所有记录 - PreparedStatement 中 ? 的顺序和 setXxx() 的调用顺序一一对应,第一个 ? 对应 setString(1),第二个 ? 对应 setInt(2)
- executeUpdate() 返回受影响的行数,返回0表示没有匹配到任何记录,更新未生效
- 也可以一次更新多个字段:
String sql = "update user set name = ?, age = ? where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "张无忌");
ps.setInt(2, 25);
ps.setInt(3, 1);
int res = ps.executeUpdate();Code language: JavaScript (javascript)
- 如果表中有多个字段需要更新,建议只更新变化的字段,不要更新所有字段,减少不必要的数据库开销
- 生产环境中修改操作前建议先查询确认目标记录是否存在,避免误更新
Previous: 使用JDBC删除记录
Next: 使用JDBC查找表记录