我是java的新手,我想更新我的数据库表列。但是在运行这段代码时我遇到了这个错误。
execom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你有 SQL语法中的错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在'Mcgreth'附近使用正确的语法 第1行
我试了一个星期。但我甚至无法想到哪里出错了。 plzz帮帮我.. 非常感谢帮助。这是我的代码。
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) {
}
}
}
答案 0 :(得分:3)
您会错过颜色字段和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...)