如何使用JDBC更新整数类型字段,解决类型不匹配报错问题
问题解决方法
错误根源
- 占位符参数顺序匹配错误:UPDATE语句的4个占位符顺序为
cad_nome(第1位)→cad_idade(第2位,整型)→cad_apelido(第3位,字符串)→cad_cpf(第4位,字符串),你的代码中给第2位的整型字段传了字符串类型的年龄输入,又把转换好的整型年龄传给了第3位的字符串字段,触发类型不匹配报错。 - 重复执行SQL:代码中先后调用
executeUpdate()和execute(),属于无意义的重复执行,会导致更新操作执行两次。
修正后代码
PreparedStatement pst = conecta.conn.prepareStatement("update cad_pessoa set cad_nome= ?, cad_idade=?, cad_apelido= ? where cad_cpf= ?"); pst.setString(1, jTextFieldNOME.getText()); // 给第2位的cad_idade字段传转换好的整型值 int n1 = Integer.parseInt(jTextFieldIDADE.getText()); pst.setInt(2, n1); // 给第3位的cad_apelido字段传对应字符串值 pst.setString(3, jTextFieldAPELIDO.getText()); pst.setString(4, jFormattedTextFieldCPF.getText()); pst.executeUpdate(); // 仅调用一次即可,executeUpdate会返回受影响行数,可自行接收判断执行结果
额外建议
- 建议给
Integer.parseInt()逻辑加异常捕获,避免用户输入非数字内容时程序崩溃 - 可以添加输入框空值判断,避免输入为空时触发空指针或非法值报错
内容的提问来源于stack exchange,提问作者Luís Felipe Ambrozin
相关产品推荐
相关产品推荐

