为什么这个mysql插件在java JDBC中失败了

时间:2013-03-15 07:30:21

标签: java mysql jdbc

try
         {
            String sql="INSERT INTO `task`(`task`,`time`) VALUES(?,?)";
            PreparedStatement stmt=this.connection.prepareStatement(sql);
            stmt.setString(1, this.task);
            stmt.setInt(2, this.time);
            //stmt.
            Boolean res= stmt.execute(sql);
         }
         catch(Exception e)
         {
             System.err.println(e);
         }

ERROR:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;查看与MySQL服务器版本对应的手册,以便在第1行“?,?)”附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

不要使用

stmt.execute(sql);

使用

stmt.execute();

执行PreparedStatement

您正在使用的第一个尝试执行给定的字符串,由于其中包含占位符'?'值,这显然不是您想要执行的字符串(它是java.sql.Statement接口的方法)。

第二个是来自java.sql.PreparedStatement的方法,并使用您通过PreparedStatement方法输入的值执行setXXX()


此外,在您的情况下,您的字符串中不需要刻度线,您只需编写

即可
String sql="INSERT INTO task(task,time) VALUES(?,?)";