Mysql数据库表不更新

时间:2016-04-05 08:35:31

标签: java mysql

我是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) {
           }
      }
}

1 个答案:

答案 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...)