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行**
答案 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查询中包括数据。您只需要知道数据的类型是什么,但是语句如何处理“如何”部分。