java JDBC中此mysql插入失败的原因

java JDBC中此mysql插入失败的原因,java,mysql,jdbc,Java,Mysql,Jdbc,错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“?,?)”附近使用的正确语法 try { String sql="INSERT INTO `task`(`task`,`time`) VALUES(?,?)"; PreparedStatement stmt=this.conne

错误:

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

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);
         }
使用

执行您的
PreparedStatement

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

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


此外,在您的情况下,您不需要在字符串中使用记号,您可以直接编写

stmt.execute();

MySql期望字符串“value”而不是value,所以尝试将?用引号括起来。@JevgeniSmirnov:不,不需要它,
PreparedStatement
会为您解决这个问题。@jlordo使用JDBC时,您也可能需要反勾号,但只需要在实际需要的地方(就像所有其他MySQL使用一样,请参见)。@jlordo,哦,好的。将给我自己留个便条。@markrottveel我们应该在查询字符串中始终使用backticks then,还是仅当它是保留字(例如:event)时才使用backticks?
stmt.execute();
String sql="INSERT INTO task(task,time) VALUES(?,?)";