Java MySQL SyntaxErrorException关于更新查询

Java MySQL SyntaxErrorException关于更新查询,java,mysql,netbeans,jdbc,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 =

我正在尝试使用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语法异常

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

我该怎么解决呢?

你需要像
添加
那样用反勾号进行转义

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

顺便说一句,您没有正确使用prepared语句。

问题似乎在于您使用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(); 

当您使用PerparedStatement时,为什么不设置(…)调用而不是纯文本?@user2507358:首先你需要转义
add
。然后你应该查看准备好的语句。用于Java和JDBC。请稍候。我使用JDBC连接制作了这条连接线。因此,我将把它完全作为另一个问题发布。请回答这篇文章。发布后,我将立即放置链接。