使用JDBC修改表记录

使用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)
  • 如果表中有多个字段需要更新,建议只更新变化的字段,不要更新所有字段,减少不必要的数据库开销
  • 生产环境中修改操作前建议先查询确认目标记录是否存在,避免误更新

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注