PreparedStatement
Ralat timbul daripada cubaan menggunakan String dengan setDate
, yang memerlukan objek java.sql.Date
. Berikut ialah cara untuk mengendalikan input tarikh rentetan dengan betul:
Kaedah 1: Tukar Rentetan kepada java.sql.Date
Pendekatan ini menukar tarikh rentetan anda menjadi objek java.sql.Date
sebelum menghantarnya kepada setDate
. Ini memerlukan objek DateFormat
(cth., SimpleDateFormat
) untuk menghuraikan rentetan:
<code class="language-java">java.sql.Date date = new java.sql.Date(dateFormatMDY.parse(vDateMDYSQL).getTime()); prs.setDate(2, date); </code>
Ingat untuk mengendalikan kemungkinan ParseException
pengecualian semasa proses penghuraian.
Kaedah 2: Gunakan setString
dan Penukaran Pangkalan Data
Kaedah ini menggunakan setString
dan bergantung pada pangkalan data untuk melaksanakan penukaran tarikh. Pertanyaan SQL anda perlu memasukkan fungsi to_date
(atau setara untuk sistem pangkalan data anda) untuk menukar rentetan kepada tarikh:
<code class="language-java">prs.setString(2, vDateMDYSQL); // ... SQL statement ... to_date(?, 'MM/dd/yyyy HH:mm:ss') // ... rest of the SQL statement ...</code>
Rentetan format ('MM/dd/yyyy HH:mm:ss') mesti sepadan dengan format rentetan vDateMDYSQL
anda. Laraskan mengikut keperluan untuk format tarikh khusus anda.
Kaedah optimum bergantung pada keperluan aplikasi anda dan keupayaan pangkalan data. Kaedah 1 menawarkan kawalan yang lebih baik pada bahagian klien tetapi memerlukan pengendalian ralat. Kaedah 2 memudahkan kod Java tetapi mengalihkan beban penukaran kepada pangkalan data. Pertimbangkan faktor seperti prestasi pangkalan data dan pengendalian ralat apabila memilih pendekatan terbaik.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan setDate dengan betul dalam PreparedStatement dengan Input Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!