2

日付型の変数があります。type を返す関数を使用して、この日付を取得しますDate。そこで、2 つの変数を次のように定義しました。

Date expDate=null, startDate=null;

次に、関数を呼び出しました。

expDate=c.getNotAfter();
startDate= c.getNotBefore();

次に、次を使用してデータベースに挿入します。

prepStmt.setDate(1,(java.sql.Date) startDate);
prepStmt.setDate(2, (java.sql.Date) expDate);

プログラムを実行した後、次のエラーが表示されます。

java.util.Date cannot be cast to java.sql.Date

データベースの列は DATETIME 型として定義されます。どうすれば問題を解決できますか?

4

3 に答える 3

3

次のように使用します。

prepStmt.setDate(1,new java.sql.Date(startDate.getTime())); 

これは、setDate()のメソッドがPreparedStatementではなく の型のオブジェクトをjava.sql.Date2 番目の引数として必要とするためjava.util.Dateです。

したがって、最初にjava.util.Dateオブジェクトから時間をミリ秒単位で取得し、それを のコンストラクターで使用しますjava.sql.Date

于 2012-11-22T04:26:01.667 に答える
3

次のようにします。

  prepStmt.setDate(1,new java.sql.Date(startDate.getTime()));

java.sql.DateJDBCがミリ秒値を値として識別できるようにする、ミリ秒値の薄いラッパーSQL DATEです。ミリ秒値は、から経過したミリ秒数を表しますJanuary 1, 1970 00:00:00.000 GMT

java.util.Date クラスgetTime()は時間をミリ秒単位で返します。java.sql.Dateこれを使用して、クラスの新しいオブジェクトを作成できます。

日付とともに時間が必要な場合は、タイムスタンプを使用します。

prepStmt.setTimestamp(1,new java.sql.Timestamp(startDate.getTime()));
于 2012-11-22T04:29:37.227 に答える
1
prepStmt.setDate(1, (java.sql.Date) startDate);   
prepStmt.setDate(2, (java.sql.Date) expDate);  
prepStmt.setDate(1, new java.sql.Date(startDate.getTime()));
于 2013-03-16T12:48:58.923 に答える