PreparedStatement
このエラーは、setDate
オブジェクトを必要とする String を java.sql.Date
で使用しようとすると発生します。 文字列日付入力を正しく処理する方法は次のとおりです:
方法 1: 文字列を java.sql.Date
このアプローチでは、文字列日付を java.sql.Date
に渡す前に setDate
オブジェクトに変換します。 これには、文字列を解析するための DateFormat
オブジェクト (例: SimpleDateFormat
) が必要です:
<code class="language-java">java.sql.Date date = new java.sql.Date(dateFormatMDY.parse(vDateMDYSQL).getTime()); prs.setDate(2, date); </code>
解析プロセス中に潜在的な ParseException
例外を処理することを忘れないでください。
方法 2: setString
とデータベース変換を使用する
このメソッドは setString
を利用し、データベースに依存して日付変換を実行します。 SQL クエリには、文字列を日付に変換するための to_date
関数 (またはデータベース システムの同等の関数) を含める必要があります。
<code class="language-java">prs.setString(2, vDateMDYSQL); // ... SQL statement ... to_date(?, 'MM/dd/yyyy HH:mm:ss') // ... rest of the SQL statement ...</code>
形式文字列 ('MM/dd/yyyy HH:mm:ss') は、vDateMDYSQL
文字列の形式と一致する必要があります。 必要に応じて、特定の日付形式に合わせて調整します。
最適な方法は、アプリケーションのニーズとデータベースの機能によって異なります。 方法 1 はクライアント側でより適切に制御できますが、エラー処理が必要です。方法 2 では Java コードが簡素化されますが、変換の負担がデータベースに移されます。 最適なアプローチを選択するときは、データベースのパフォーマンスやエラー処理などの要素を考慮してください。
以上が文字列入力で PreparedStatement で setDate を正しく使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。