java JDBC中此mysql插入失败的原因
错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“?,?)”附近使用的正确语法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
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(?,?)";