現在、Swing GUI コンポーネントとの間で入出力を実行し、ローカルの Microsoft Access 2007 データベースからこのデータを保存/取得するアプリケーションを Java で作成しています。Text または Memo フィールドに格納される JTextArea からの入力でレコードを更新しようとする場合を除いて、すべてうまくいっています。JTextField からの入力は正常に取得できますが、「SQLException: UPDATE ステートメントの構文エラー」が発生します。JTextArea を使用します。
問題が発生しているコードは次のとおりです。
/* <in_some_method> */
myJTextArea.setText(someString); // the components can have the exact
myJTextField.setText(someString); // same string and still have problems
saveEdit(myTable, myColumn, myJTextField.getText(), myID); // this works fine
saveEdit(myTable, myColumn, myJTextArea.getText(), myID); // this throws an exception
/* </in_some_method> */
/* the update method */
public void saveEdit(String table, String column, String value, long id) {
String query = "UPDATE " + table + " ";
query += "SET " + column + " = '" + value + "', "
query += "UpdatedAt = Now() ";
query += "WHERE ID = " + id;
try {
// conn is a working connection to the database
Statement s = conn.createStatement();
// execute the query
s.executeUpdate(query);
// close open database handle
s.close();
} catch (Exception ex) {
System.err.println(ex);
}
}
いくつかのこと:
データベース内のフィールドのデータ型には存在しないと思います。タイプにメモとテキストの両方を試しましたが、どちらも JTextField で動作し、JTextArea では動作しません。
例外は、既に述べたように、「SQLException: UPDATE ステートメントの構文エラー」です。だから私の問題はデータベーステーブルのレイアウトとは何の関係もないことを知っています。要求されたテーブルと列が存在し、アクセスできます。
誰にもアイデアはありますか?どんな助けでも大歓迎です。