我想在Java中运行一个方法,删除两个日期之间的所有记录,但是,它给了我一个Synax错误。这是代码:Java的MySQL删除日期之间的记录语法错误
public void updateIntegraton(String dateInit, String dateEnd)
{
Connection conn = ConnectionManager.getConnection();
String sql_delete = "DELETE FROM my_schema.my_table WHERE DATE(day_date) BETWEEN DATE(?) AND DATE(?)";
String sql_safe_updates = "SET SQL_SAFE_UPDATES = 0";
PreparedStatement ps_delete;
PreparedStatement ps_safe_updates;
try {
ps_safe_updates = conn.prepareStatement(sql_safe_updates);
System.out.println("Setting safe updates off.");
ps_safe_updates.execute();
ps_delete = conn.prepareStatement(sql_delete);
ps_delete.setString(1, dateInit);
ps_delete.setString(2, dateEnd);
System.out.println("Delete Query: " + ps_delete);
System.out.println("Deleting all records between dates " + dateInit +" and "+ dateEnd);
ps_delete.execute(sql_delete);
System.out.println("Deleted records. ");
} catch (SQLException e) {
System.out.println("Something went wrong on Delete");
e.printStackTrace();
}
}
正如你所看到的,我打印删除sql语句后,我替换'?'带值的参数。下面是它在控制台上打印的例子:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 '?) AND DATE(?)' at line 1
:
Delete Query: [email protected]: DELETE FROM my_schema.my_table WHERE DATE(day_date) BETWEEN DATE('2016-04-01') AND DATE('2016-04-08')
我运行在MySQL Workbench和行完全相同的查询被删除,但是当我运行Java代码我得到这个语法错误
我用这个相同的语法来运行其他的sql语句,并没有错误。我头脑中唯一的问题是,我的代码的ps_delete.execute(sql_delete)部分中使用的“execute”方法不起作用,但我使用了“executeUpdate”和“executeQuery”方法,这些方法也会给我带来错误。
我正在使用mysql-connector-java-5.0.8-bin.jar库创建到我的MySQL库的连接。
任何想法为什么会发生这种情况,我该如何解决它?
感谢
愚蠢的我。这解决了它。谢谢! –