2 回答
TA贡献1818条经验 获得超11个赞
您的sql语句缺少where子句,因此导致您的所有值pets都更新为相同的值,并且这些值之一看起来是违反主键约束的主键
尝试将您的sql语句更改为
UPDATE PETS SET PETPHOTO=?, PETTYPE=?, COLOR=?,GENDER=?,ISSTERILIZED=?,PEDIGREE=?,DATE_ENTRY=?,VACCINE1=?,VACCINE2=?,VACCINE3=? WHERE PETNAME=?
这是假设是PETNAME主键吗?否则,需要做更多工作才能获取要更新的行的 ID
更新
最近更新 SQL 后,您必须调整准备好的语句参数。PETNAME移至最后一个位置,因此应为第 11 点,其他位置应相应调整
pstmt.setString(11, petname);
pstmt.setString(1, petphoto);
pstmt.setString(2, pettype);
pstmt.setString(3, color);
pstmt.setInt(4, gender);
pstmt.setInt(5, isSterilized);
pstmt.setString(6, pedigree);
pstmt.setString(7, date_entry);
pstmt.setString(8, vaccine1);
pstmt.setString(9, vaccine2);
pstmt.setString(10, vaccine3);
如果您对查询的更改略有不同,则可以使用命名参数而不是位置参数,这样,如果您更改了命名参数的位置,则无需重新调整位置:
例子:
"UPDATE PETS SET PETPHOTO=:PETPHOTO, PETTYPE=:PETTYPE"
pstmt.setString("PETPHOTO", petphoto);
pstmt.setString("PETTYPE", pettype);
ETC...
添加回答
举报