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...
添加回答
舉報