preparedment的execute报错You have an error in your SQL syntax; check the...报错问题

来源:互联网 发布:回转企鹅罐 知乎 编辑:程序博客网 时间:2024/04/30 07:23

 

PreparedStatement preStmt = conn.prepareStatement(sql);preStmt.setString(1, user.getUname());preStmt.setString(2, user.getUpass());int i = preStmt.executeUpdate(sql);    //运行到这句的时候总是出错


报错信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?)' at line 1

 

总是纠结sql语句是否有错,但是在MySQL上运行时正常的。其实executeUpdate()是不带参数的才能正常运行。也有带参数的一个方法,所以编译不会错。

两种方法的区别是:

executeQuery()是PreparedStatement接口中定义的方法。

而executeQuery(sql)是statement中的方法,两者是不同的。

所以改成 int i = preStmt.executeUpdate(); 就不会报错了