私はデータベース全体でPreparedStatementsを使用してきましたがsetDate(index, data)、このようなDateオブジェクトを使用しても機能しますか?
"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate
これをテストするために使用できるオンラインツールはありますか?
この機能が機能するとは思わない:
"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate
Date2つのオブジェクトをいくつかのStringリテラルと連結しようとしているので。DateFormatterをに変換するにはDate、を使用する必要がありますString。
に固執し、PreparedStatement文字列/値を連結してSQLステートメントを作成しないようにする必要があります。は、PreparedStatementに対してある程度の保護を提供しますがsql injection、文字列連結メソッドは、SQLインジェクションのリスクにさらされます。
日付をデータベースで認識可能な形式でフォーマットするのが最善です。に直接追加するとString、日付toString()が呼び出されます。データベースがその構文をサポートするかどうかは疑わしいので、次のようなことを行う方がよいでしょう。
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = "SELECT * FROM table WHERE date BETWEEN '"
+ formatter.format(date) + "' AND " + formatter.format(otherDate) + "'";
また、ケビンが述べたように、PreparedStatementこれはあなたにより多くの保護を提供するので、むしろsに固執します。