JDBC执行UPDATE语句无报错但未更新数据库是什么原因?
问题原因分析
- 最核心的原因是
updateAppointment方法的SQL参数不完整:你的更新语句末尾有WHERE Appointment_ID = ?的条件,需要第10个参数传入要更新的预约ID,但你的方法入参没有包含Appointment_ID字段,PreparedStatement也只赋值了前9个参数,第10个占位符没有对应赋值,最终执行的SQL等价于WHERE Appointment_ID = NULL,无法匹配到任何数据库记录,自然不会触发更新,且SQL本身语法合法所以不会抛出异常。 - 排查修复方案:
- 给
updateAppointment方法新增入参int appointmentID,在设置完contactID的赋值逻辑后,补充ps.setInt(10, appointmentID);,调用方法时传入对应要修改的预约ID即可。 - 可以把
ps.execute()替换为int affectedRows = ps.executeUpdate(),打印affectedRows的值,如果为0就说明没有匹配到记录,方便快速定位参数匹配问题。 - 若补充参数后仍未更新,可检查传入的Appointment_ID是否在数据库中真实存在,以及JDBC连接是否开启了自动提交(若关闭了自动提交需手动执行
connection.commit()才能把更新持久化到数据库)。
- 给
内容的提问来源于stack exchange,提问作者lostInCodeKeys
相关产品推荐
相关产品推荐

