我在尝试运行这个简单的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()的结果。
另外,我很确定这不是一个引用问题,当它是文本时我正在使用'',而当它是一个整数时我没有使用它。
感谢您的帮助。
答案 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
等等