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行“?,?)”附近使用正确的语法
答案 0 :(得分:2)
不要使用
stmt.execute(sql);
使用
stmt.execute();
执行PreparedStatement
。
您正在使用的第一个尝试执行给定的字符串,由于其中包含占位符'?'
值,这显然不是您想要执行的字符串(它是java.sql.Statement
接口的方法)。
第二个是来自java.sql.PreparedStatement
的方法,并使用您通过PreparedStatement
方法输入的值执行setXXX()
。
此外,在您的情况下,您的字符串中不需要刻度线,您只需编写
即可String sql="INSERT INTO task(task,time) VALUES(?,?)";