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