0

javaを介してodbcドライバーを介してアクセスデータベースを更新しようとしています。

テーブル名は form1

このコマンドを実行すると、構文エラーが発生します。

updates="INSERT INTO form1 
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings); 

values("+abc+",'"+t3.getText()+"','"+t4.getText()+"',"+def+","+def1+","+zzz+",'"
      +t8.getText()+"','"+t9.getText()+"','"+t10.getText()+"',"+aaaa+",'"
      +t12.getText()+"',"+xyz+",'"+t13.getText()+"','"+dd+"','sa','da')";

ありがとうございました。

4

6 に答える 6

1

あなたの発言には 2 つの問題があります - 現実の問題と潜在的な問題です。

  • Real:valuesキーワードの前のセミコロンを削除する必要があります
  • 可能性: ステートメントをパラメーターで使用できるように変換する必要があります。そうしないと、文字列パラメーターの本体に一重引用符があると、構文エラーが発生します。

パラメータ化された準備済みステートメントに切り替える方法は次のとおりです。

String updates="INSERT INTO form1 (entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,bloodgroup,slno,college,department,liveprojects,trainings) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement psUpd = con.prepareStatement(updates);
psUpd.setInt(1, abc);
psUpd.setString(2, t3.getText());
psUpd.setString(3, t4.getText());
psUpd.setInt(4, def);
psUpd.setInt(5, def1); // The types of parameters need to match the type of setXYZ
... // Continue for the remaining parameters, then call
psUpd.executeUpdate();
于 2012-08-04T10:43:55.237 に答える
1

最初の問題:

updates="INSERT INTO form1 
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings);

*フィールドと値を ; で区切ります。しかし、それは空白になります*

次に、prepareStatement を使用するのが最善です

String sql ="INSERT INTO TableName  
(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,
bloodgroup,slno,college,department,liveprojects,trainings) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?); 

    PreparedStatement ps = con.prepareStatement(sql );    
     int index = 1;
    ps.setInt(index++, abc);
    ps.setString(index++, t3.getText());
    ps.setString(index++, t4.getText());
    ps.setInt(index++, def);
    ps.setInt(index++, def1); // The types of parameters need to match the type of setXYZ
    ... // Continue for the remaining parameters, then call
    ps.executeUpdate();
于 2012-08-04T11:27:33.587 に答える
0

列名の後のセミコロン(;)が原因です。あなたはそれをすることによって声明を終わらせています。;を削除するだけです。。コードは機能します。

于 2012-08-04T10:55:22.707 に答える
0

これを試して.....

updates="INSERT INTO form1(entrydate,name,gender,month,date,phno,emailid,facebookid,address,semester,bloodgroup,slno,college,department,liveprojects,trainings) 
values( '"+abc+"','"+t3.getText()+"','"+t4.getText()+"','"+def+"','"+def1+"','"+zzz+"','" +t8.getText()+"','"+t9.getText()+"','"+t10.getText()+"','"+aaaa+"','"
  +t12.getText()+"','"+xyz+"','"+t13.getText()+"','"+dd+"','sa','da')";
于 2012-08-04T11:45:12.267 に答える
0

;beforeを削除してみてくださいvalues

于 2012-08-04T10:43:42.510 に答える
0

1.

直接使用してください。INSERT INTO form1 values(value1,value2......);

2.独自の形式に固執したい場合は、次の変更を行います。

-前の を削除します; values.

-コンマを挿入するには、代わりに使用することをお勧めします "," ','

于 2012-08-04T10:47:04.410 に答える