Javaで2つの日付間のすべてのレコードを削除するメソッドを実行しようとしていますが、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ライブラリへの接続を作成するためにmysql-connector-java-5.0.8-bin.jarライブラリを使用しています。
なぜこれが起こっているのか、どのように解決できますか?
おかげ
ダム私。これで解決しました。ありがとう! –