我正在尝试使用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“附近
我该如何解决?
答案 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();