0
try {
    String req = "INSERT INTO nouvelle_installation" +
      "values('" + ref + "','" + today + "','" + check + "','" + nbligne +
      "','" + tligne + "','" + categorie + "','" + instal + "','" + cin +
      "','" + user + "','" + prenom+"','" + numC + "','" + num + "','" + voie +
      "','" + tvoie + "','" + imm + "','" + app + "','" + etage +
      "','" + codep + "')"; 

    Statement m = s.getCon().createStatement();  
    m.executeUpdate(req);
} catch (SQLException e1) {
    e1.printStackTrace();
}

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Erreurdesyntaxeprèsde'' aaa'、' 2012-04-10'、''、' ------'、' ------- --------'、' -------'、'NouvelleInstallati'àlaligne1

4

5 に答える 5

2

他の人が言ったように、ステートメントを連結する代わりに、準備されたステートメントを使用してください。

これにより、 SQL インジェクションと現在の問題を防ぐことができます。

"INSERT INTO nouvelle_installation" + "values" ...

結果は

"INSERT INTO nouvelle_installationvalues" ...

table-name と keyword の間にスペースがありませんvalues

于 2012-04-10T10:27:59.467 に答える
2

"INSERT INTO nouvelle_installation" + "values(... または文字列は次のように表示されます) の間にスペースを入れる必要があります。

"INSERT INTO nouvelle_installationvalues("...

だから、それはこのように見えるはずです

"INSERT INTO nouvelle_installation" + " values(...
于 2012-04-10T10:28:11.510 に答える
1

すでに誰かが指摘したように、このコードは SQL インジェクション攻撃の対象です。
ただし、クエリで表示される最初のエラーは、valuesキーワードの前にスペースがないことです

于 2012-04-10T10:27:37.910 に答える
1

ステートメントを連結する代わりに、準備されたステートメントを使用してください。

また、準備されたステートメントはステートメントよりも高速です。

table-name と keyword の間にスペースがありませんvalues

于 2012-04-10T11:16:39.243 に答える
0

num次と前に引用符があり、voie間にコンマはありません。それはあなたが望んでいたものですか?

... + "','" + num  + "'"   +
      "'"   + voie + "','" + tvoie + ...

これにより、効果的に が得られます,'NUM''VOIE','

valuesまた、キーワードの前にスペースはありません。

于 2012-04-10T10:28:58.047 に答える