Java Mysql删除日期间记录语法错误

Java Mysql删除日期间记录语法错误,java,mysql,sql,syntax-error,sql-delete,Java,Mysql,Sql,Syntax Error,Sql Delete,我试图在Java中运行一个方法,删除两个日期之间的所有记录,但是,它给了我一个Synax错误。代码如下: public void updateIntegraton(String dateInit, String dateEnd) { Connection conn = ConnectionManager.getConnection(); String sql_delete = "DELETE FROM my_schema.my_table WHERE DATE(day_date)

我试图在Java中运行一个方法,删除两个日期之间的所有记录,但是,它给了我一个Synax错误。代码如下:

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();
    }
}
如您所见,在用值替换“?”参数之后,我正在打印delete sql语句。下面是它在控制台上打印内容的示例:

Delete Query: com.mysql.jdbc.PreparedStatement@1686d1f: DELETE FROM my_schema.my_table WHERE DATE(day_date) BETWEEN DATE('2016-04-01') AND DATE('2016-04-08')
我在MySQL Workbench上运行了完全相同的查询,行被删除,但当我运行java代码时,出现了以下语法错误:

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
我使用了相同的语法来运行其他sql语句,没有出现错误。我脑子里唯一想的是,我代码中ps_delete.execute(sql_delete)部分使用的“execute”方法不起作用,但我使用的“executeUpdate”和“executeQuery”方法也会给我带来错误

我正在使用mysql-connector-java-5.0.8-bin.jar库创建到我的mysql库的连接

你知道为什么会这样吗?我该怎么解决

谢谢

在我看来,应该是:

 ps_delete.execute();

参考StackOverflow上的另一篇文章,您应该使用setDate方法。 [

您的代码应该如下所示:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    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.**setDate**(1, sdf.parse(dateInit));
        ps_delete.**setDate**(2, sdf.parse(dateEnd));

        ps_delete.execute();

    } 
我不尝试代码,只是想让你了解它是如何工作的。 让我知道

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    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.**setDate**(1, sdf.parse(dateInit));
        ps_delete.**setDate**(2, sdf.parse(dateEnd));

        ps_delete.execute();

    }