ホームページ >データベース >mysql チュートリアル >PreparedStatements で setDate() を適切に使用して IllegalArgumentException を回避する方法
IllegalArgumentException
を使用した setDate()
を避けるハードコーディングされた SQL クエリからパラメーター化されたプリペアド ステートメントに移行すると、コードの保守性とセキュリティが向上します。 ただし、setDate()
を使用すると、IllegalArgumentException
が発生する場合があります。このガイドでは、java.sql.Date
と java.sql.Timestamp
を使用した解決策を示します。
DATE 列の処理
タイプ DATE
のデータベース列の場合は、次のメソッドを使用して日付パラメーターを正しく設定します。
文字列の使用: 日付文字列を「yyyy-MM-dd」形式で指定します:
<code class="language-java"> ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
java.util.Date の使用: java.util.Date
オブジェクトの変換:
<code class="language-java"> java.util.Date endDate = ...; // Your java.util.Date object 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 列の処理
データベース列のタイプが TIMESTAMP
または DATETIME
の場合は、setTimestamp()
を次のオプションとともに使用します。
文字列の使用: 日付と時刻の文字列を「yyyy-MM-dd HH:mm:ss[.f...]」形式で指定します:
<code class="language-java"> ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));</code>
java.util.Date の使用: java.util.Date
オブジェクトの変換:
<code class="language-java"> java.util.Date endDate = ...; // Your java.util.Date object ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
現在のタイムスタンプの設定: 現在のタイムスタンプを挿入:
<code class="language-java"> ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
これらのガイドラインに従うことで、IllegalArgumentException
を回避して、準備されたステートメントに日付とタイムスタンプのパラメーターを確実に設定できます。 データベース列のデータ型に基づいて、適切なメソッド (setDate()
または setTimestamp()
) を選択してください。
以上がPreparedStatements で setDate() を適切に使用して IllegalArgumentException を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。