ホームページ > データベース > mysql チュートリアル > Java PreparedStatements で setDate() を正しく使用して「IllegalArgumentException」を回避する方法

Java PreparedStatements で setDate() を正しく使用して「IllegalArgumentException」を回避する方法

DDD
リリース: 2025-01-18 22:27:11
オリジナル
413 人が閲覧しました

How to Correctly Use setDate() in Java PreparedStatements to Avoid `IllegalArgumentException`?

PreparedStatement で setDate() メソッドを使用します

コードの標準化を改善するには、ハードコードされた 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 を使用して誤って初期化されていることです。この問題を解決するには、日付を扱うときに次の代替案を検討してください:

java.sql.Date

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>
    ログイン後にコピー

java.sql.タイムスタンプ

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート