我是java新手,我想更新我的数据库表列。但是当运行这个代码时,我得到了这个错误。
execom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有
SQL语法中的错误;请查看与
MySQL服务器版本,用于在'Mcgreth'附近使用正确的语法
第1行
我试了一个星期但我甚至想不出哪里错了。请帮帮我。。
非常感谢你的帮助。这是我的代码。
public boolean update(File2nd dt) {
try {
con = (Connection) DriverManager.getConnection(url, username, password);//get the connection
String query = "UPDATE file1 SET name='" + dt.getName()+ "',age='" + dt.getAge()+ "',color="+dt.getColor()+ ""
+ " WHERE name=" + dt.getName();
pst = (com.mysql.jdbc.PreparedStatement) con.prepareStatement(query);
pst.executeUpdate();
System.out.println("Updated queries: ");
return true;
} catch (Exception e) {
System.out.println("exe" + e);
return false;
} finally {
try {
if (pst != null) {
pst.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
}
}
}
最佳答案
您将错过颜色字段和where子句中的单引号。
"UPDATE file1 SET name='" + dt.getName()+ "',age='" + dt.getAge()+ "',color='"+dt.getColor()+ "'"
+ " WHERE name='" + dt.getName() + "'";
此外,您还应该使用参数化语句,原因有很多:防止sql注入,提高可读性,以及DBMS执行查询的效率。
"UPDATE file1 SET name=?,age=?,color=? WHERE NAME =?";
pst.setString(1, dt.getName());
pst.setInt(2, dt.getAge());
(etc...)