第1行''x')'附近的SQL语法错误(插入语句)

时间:2017-04-01 21:23:39

标签: java mysql eclipse syntax-error sql-insert

我在尝试运行这个简单的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中执行它,我就会收到此消息错误:

  第1行''x'附近的

语法错误

x是txtobservation.getText()的结果。

另外,我很确定这不是一个引用问题,当它是文本时我正在使用'',而当它是一个整数时我没有使用它。

感谢您的帮助。

1 个答案:

答案 0 :(得分: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
}

注意
getText它返回String而不是int而不是float如果txtage.getText()是int你必须将它转换为int你可以使用:

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

等等