如何将JDBC拼接的INSERT登录表语句改写为PreparedStatement预编译语句
正确的PreparedStatement插入写法
完整代码实现
// 构造预编译INSERT语句,显式指定字段名提升兼容性 PreparedStatement pstmt = con.prepareStatement("INSERT INTO login (login_id, username, password) VALUES (?, ?, ?)"); // 按占位符顺序赋值,严格匹配字段数据类型 pstmt.setInt(1, Integer.parseInt(jTextField1.getText())); // login_id为整数类型 pstmt.setString(2, jTextField2.getText()); // username为字符串类型 pstmt.setString(3, jTextField3.getText()); // password为字符串类型 // 执行插入操作,返回受影响行数 int affectedRows = pstmt.executeUpdate();
关键说明
- 预编译语句用
?作为占位符,不需要手动拼接单引号,完全避免SQL注入风险和特殊字符导致的语法错误 - 显式指定插入的字段名,避免后续表结构变更(如新增字段)后,值与字段顺序不匹配的问题
- 赋值时严格匹配字段数据类型:
login_id是整数类型,需要先将输入框的字符串内容转为整数再调用setInt赋值,字符串类型字段直接调用setString即可
内容的提问来源于stack exchange,提问作者ek.Nik
相关产品推荐
相关产品推荐

