-3
我寫了這段代碼來更新德比數據庫中的病人,但它拋出了一個SQLSyntaxErrorException
。我錯過了什麼嗎?更新德比數據庫異常
public void updateInDatabase(int ID,String sex, String firstName, String familyName, String eMail) {
try {
String sql = "UPDATE PATIENT SET sex = "+ sex +" WHERE NR = "+ID;
st.executeUpdate(sql);
String sq2 = "UPDATE PATIENTEN SET FIRSTNAME=" + firstName + "WHERE NR=" + ID;
st.executeUpdate(sq2);
String sq3 = "UPDATE PATIENTEN SET FAMILYNAME=" + familyName + "WHERE NR=" + ID;
st.executeUpdate(sq3);
String sq4 = "UPDATE PATIENTEN SET EMAIL=" + eMail + "WHERE NR=" + ID;
st.executeUpdate(sq4);
} catch (SQLException ex) {
Logger.getLogger(DbManagerPatienten.class.getName()).log(Level.SEVERE, null, ex);
}
}
是的,你錯過了使用PreparedStatement'的'防止語法錯誤和[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)攻擊,黑客會竊取你的數據並刪除你的表。 – Andreas
至於問題本身,你錯過了向你展示完整的錯誤信息和導致它的原因的部分。通常最好發佈完整的堆棧跟蹤。 – Andreas
問:是否故意更新兩個不同的表格('PATIENT'和'PATIENTEN')?爲什麼執行3個不同的'UPDATE'語句來更新同一個表的3個不同列。在一個聲明中會這麼做會更好。 – Andreas