0

JTextField を使用して DB のコンテンツを更新しようとしています。特定のレコードに関するすべての情報を含むフレームがあり、正しいデータまたは変更されたデータをすべての JTextField に入力してから、prepareStatement で UPDATE ステートメントを実行しようとしていますが、動作しないようです。私はこのようにしようとしています:

.....
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String Base = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=DATABASE.mdb";
Connection con = DriverManager.getConnection(Base,"","");
PreparedStatement pst = con.prepareStatement("update table_name SET table_item1='?', table_item2='?', table_item3='?', table_item4='?', table_item5=?, table_item6=?, table_item7=? WHERE table_item8=?");
pst.setString(1, tf1.getText());
pst.setString(2, tf2.getText());
pst.setString(3, tf3.getText());
pst.setString(4, tf4.getText());
pst.setString(5, tf5.getText());
pst.setString(6, tf6.getText());
pst.setString(7, tf7.getText());
pst.setString(8, comboItem.getSelectedItem());
int res= pst.excecuteUpdate();
pst.close();
con.close();
......

' 'を使用するクエリでは、文字列コンポーネントであるため、pst.setString(5, tf5.getText());でエラーが発生します。整数値がそこから始まるためかもしれませんが、それはただの予感です。

4

1 に答える 1

2

文字列フィールドの準備済みステートメントで一重引用符 (') を使用する必要はなく、「更新」クエリを修正します。

PreparedStatement pst = con.prepareStatement("update table table_name SET table_item1='?'

すべての「?」から「」を削除します すべての文字列フィールドに対して次のようにします。

PreparedStatement pst = con.prepareStatement("update table table_name SET table_item1=?, 

したがって、正しいクエリは次のようになります。

PreparedStatement pst = con.prepareStatement("update table table_name SET table_item1=?, table_item2=?, table_item3=?, table_item4=?, table_item5=?, table_item6=?, table_item7=? WHERE table_item8=?");
于 2013-03-20T20:08:29.777 に答える