我是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...)

09-25 22:19