关于UPDATE查询的MySQL SyntaxErrorException

时间:2013-08-09 14:04:16

标签: java mysql netbeans jdbc

我正在尝试使用Netbeans更新表格中的字段。更新声明如下:

String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/student_reg"; 
try { 
Class.forName(driver); 
Connection con = DriverManager.getConnection(url,"user","abc"); 
PreparedStatement state = con.prepareStatement("UPDATE supplier SET sname='" + txtname.getText()+"' , add='"+txtadd.getText()+"' WHERE sid ='" +txtid.getText() + "'"); 
state.executeUpdate(); 
JOptionPane.showMessageDialog(null, "Your Record sucessfully Updated"); 
}catch (Exception ex) { 
JOptionPane.showMessageDialog(null, ex);
}

但是我收到以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQL SyntaxErrorException

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第1行'add = kegalle'where sid = 001“附近

我该如何解决?

2 个答案:

答案 0 :(得分:2)

您需要使用反引号{/ 1>来reserved words in MySQL转义add

UPDATE supplier 
SET sname='" + txtname.getText()+"', `add` = ...
                 here ---------------^---^ 

顺便说一句,你没有正确使用预备陈述。

答案 1 :(得分:1)

问题似乎是您使用PreparedStatement的方式。试试这个:

PreparedStatement state = con.prepareStatement("UPDATE supplier SET sname = ?, add = ? WHERE sid = ?");
state.setString(1,txtname.getText()); // sname (parameter 1)
state.setString(2,txtadd.getText()); // add (parameter 2)
state.setString(3,txtid.getText()); //sid (parameter 3) is actually a varchar?
state.executeUpdate();