com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException我该如何解决

时间:2018-12-16 10:32:41

标签: mysql

try{
    stmt=conn.createStatement();


    int stdID=Integer.parseInt(id.getText());
    String stdName=name.getText();
    int stdAge=Integer.parseInt(age.getText());
    String stdAddress=address.getText();
    String stdEMail=email.getText();
    String stdDepartment=(String) department.getSelectedItem();
    String stdDesignation= (String) designation.getSelectedItem();
    int stdSalary=Integer.parseInt(salary.getText());

    String sql="INSERT INTO EMPLOYEE(stdID,stdName,stdAge,stdAddress,stdEMail,stdDepartment,stdDesignation,stdSalary)"
          + " VALUES('"+stdID+"',"+stdName+"','"+stdAge+"','"+stdAddress+"','"+stdEMail+"','"+stdDepartment+"','"+stdDesignation+"','"+stdSalary+"')";

    stmt.executeUpdate(sql);
    JOptionPane.showMessageDialog(null, "Data is successfully inserted");


}catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}

**这是我的项目代码。执行代码时出现错误。它显示:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException。你有一个   SQL语法错误;检查与您的手册相对应的手册   适用于正确Syntex的MariaDB服务器版本   在“,'21','aaaa','abc@gmail.com','A','经理','11111111')'附近使用   第1行**

1 个答案:

答案 0 :(得分:0)

您的插入查询有问题,例如引用的文字值不正确。最好的解决方法是只使用准备好的语句。

String sql = "INSERT INTO EMPLOYEE (stdID, stdName, stdAge, stdAddress, stdEMail, ";
sql += "stdDepartment, stdDesignation, stdSalary) ";
sql += "VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, stdID);
ps.setString(2, stdName);
ps.setInt(3, stdAge);
ps.setString(4, stdAddress);
ps.setString(5, stdEMail);
ps.setString(6, stdDepartment);
ps.setString(7, stdDesignation);
ps.setInt(8, stdSalary);

ps.executeUpdate();

准备好的语句所做的不仅仅是防止SQL注入。它们还使您不必担心如何在SQL查询中包括数据。您只需要知道数据的类型是什么,但是语句如何处理“如何”部分。