0

Javaで2つの日付の私のSQLステートメントの間で問題を検索する

String sql ="Select * from Payment where Payment_Date between '"+date_1+"' and '"+date_2+"'";

それは私にデータ型の不一致を与えます. 私の問題は '"+date_1+"' と '"+date_2+"' で発生すると思います??

date_1 と date_2 から取得します

Date date_1 = date1.getDate();
Date date_2 = date2.getDate();
4

2 に答える 2

2

PreparedStatementの使用を開始すると、 SQL インジェクションが防止されます。詳細については、この SO Q&Aをお読みください。

次のようなことができます:

String sql ="Select * from Payment where Payment_Date between ? and ? ";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setDate(1, date_1 );
pstmt.setDate(2, date_2 );
// date_1 and date_2 objects should be of type java.sql.Date

メソッドで正しいパラメータ タイプを設定していることを確認してくださいsetXXX()。のデータ型がPayment_Dateisおよび関連する型である場合は、setDate()メソッドでjava.sql.DateDATEを設定する必要があることに注意してください。列のデータ型が の場合、java.sql.TimestampおよびsetTimestamp()メソッドを使用します。TIMESTAMP

脚注:-

you にjava.util.Dateオブジェクトがある場合は、それを次のように変換できますjava.sql.Date

java.sql.Date sqlDateObject = new java.sql.Date(utilDateObject.getTime());
于 2013-07-16T07:54:40.283 に答える
0

Date クラスのパッケージは、java.util ではなく java.sql でなければなりません。

 pstmt = conn.prepareStatement("Select * from Payment where Payment_Date between ? and ?"); 
 pstmt.setDate(1, date_1);
 pstmt.setDate(2, date_2);
于 2013-07-16T07:57:15.777 に答える