-3
私はderbyデータベースの患者を更新するためにこのコードを書いたが、それはSQLSyntaxErrorException
を投げる。何か不足していますか?derbyデータベースの例外を更新する
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
質問:2つの異なるテーブル( '患者 'と'患者')を更新していることを熟考していますか?なぜ3つの異なるUPDATEステートメントを実行して同じテーブルの3つの異なる列を更新しているのですか? 1つのステートメントでこれを行うのがより効果的*になります。 – Andreas