我想在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庫的連接。
任何想法爲什麼會發生這種情況,我該如何解決它?
感謝
愚蠢的我。這解決了它。謝謝! –