2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
您的sql語句缺少where子句,因此導(dǎo)致您的所有值pets都更新為相同的值,并且這些值之一看起來是違反主鍵約束的主鍵
嘗試將您的sql語句更改為
UPDATE PETS SET PETPHOTO=?, PETTYPE=?, COLOR=?,GENDER=?,ISSTERILIZED=?,PEDIGREE=?,DATE_ENTRY=?,VACCINE1=?,VACCINE2=?,VACCINE3=? WHERE PETNAME=?
這是假設(shè)是PETNAME主鍵嗎?否則,需要做更多工作才能獲取要更新的行的 ID
更新
最近更新 SQL 后,您必須調(diào)整準(zhǔn)備好的語句參數(shù)。PETNAME移至最后一個(gè)位置,因此應(yīng)為第 11 點(diǎn),其他位置應(yīng)相應(yīng)調(diào)整
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);
如果您對查詢的更改略有不同,則可以使用命名參數(shù)而不是位置參數(shù),這樣,如果您更改了命名參數(shù)的位置,則無需重新調(diào)整位置:
例子:
"UPDATE PETS SET PETPHOTO=:PETPHOTO, PETTYPE=:PETTYPE"
pstmt.setString("PETPHOTO", petphoto);
pstmt.setString("PETTYPE", pettype);
ETC...

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
看起來您的更新查詢?nèi)鄙?where 條件。如果您在沒有 where 條件的情況下運(yùn)行更新腳本,則所有行的相同數(shù)據(jù)都會更新。
添加回答
舉報(bào)