コードの標準化を改善するには、ハードコードされた SQL 変数を準備されたステートメントに置き換えてバインドする必要があります。ただし、setDate() メソッドの使用には問題があります。
String vDateMDYSQL = vDateMDY; java.sql.Date date = new java.sql.Date(0000-00-00); ... prs.setDate(2, date.valueOf(vDateMDYSQL));
SQL ステートメントの実行時に、次のエラーが発生しました:
<code>java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138)</code>
問題は、日付変数がデフォルト値として 0000-00-00 を使用して誤って初期化されていることです。この問題を解決するには、日付を扱うときに次の代替案を検討してください:
DATE 列タイプを持つテーブルの場合:
文字列を使用します:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
java.util.Date を使用します:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
現在の日付を取得します:
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
TIMESTAMP または DATETIME 列タイプのテーブルの場合:
文字列を使用します:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
java.util.Date を使用します:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
現在のタイムスタンプを取得します:
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
上記のいずれかの方法を使用して、準備されたステートメントに日付を正しく設定し、発生したエラーを回避します。
以上がJava PreparedStatements で setDate() を正しく使用して「IllegalArgumentException」を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。