2017-04-01 13 views
0

この単純なSQL文を実行しようとすると問題が発生します。行1(挿入文)の「 'x'付近のSQL構文エラー」

try{ 
          stm.executeUpdate("INSERT INTO exam_somatique_6_12(id_p, id_m, id_u, Date, age, poids, taille, TA, exam_clinique, acuite_visuelle, acuite_auditive, age_puberte, conclusion) VALUES ("+idpat+","+idmed+","+idum+",'"+currentdate+"',"+txtage.getText()+","+txtpoids.getText()+","+txttaille.getText()+","+txtta.getText()+",'"+Clinique+"','"+Visuelle+"', '"+Auditive+"', "+Signe+", '"+txtobservation.getText()+"')"); 
            } 

           catch(SQLException e1) 
           { 
            System.err.println(e1.getMessage()); 
           } 

          dispose(); 

mysqlの上でそれを実行するときに、私は何の問題もない、しかし、すぐに私はJavaでそれをやろうとして、私はこのメッセージのエラーが出ます:「」 『X』の近くに

構文エラー) 1行目

xはtxtobservation.getText()の結果です。

また、私はそれが引用問題ではないと確信しています。私はテキストのときは ''を使い、整数のときはやっていません。

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

+1

Integer.parseInt(txtage.getText());//get int value form a String Float.parseFloat(txtpoids.getText());//get float value from a String 

ので、それは次のようになり実行中の正確なクエリを印刷するのに役立ちます – shiladitya

+0

パラメータの使用方法を学びます。文字列を削除すると構文上の問題が発生するため、これらの問題は発生しません。 –

+0

@shiladitya私はこのステートメントが長すぎるとは思わなかったので、テーブルの名前を変更しました。とにかく、私はそれを編集しました、ここでは正確なクエリです。 – Adel

答えて

1

あなたはPreparedStatementを使用する必要があります代わりに、それは

String query = "INSERT INTO table(id_p, id_m, id_u, Date, age, poids, taille, 
       TA, clinique, visuelle, auditive, puberte, observation) 
       VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

try (PreparedStatement ps = connection.prepareStatement(query) { 

    ps.setInt(1, idpat);//set values to your query 
    ps.setInt(2, idmed); 
    .... 
    ps.executeUpdate();//execute your query 
} 

より安全でより有用である、それはあなたがint型に変換する必要がint型txtage.getText()がある場合に浮くint型ではなく文字列を返さないのgetTextあなたが使用することができます。

関連する問題