Untuk meningkatkan penyeragaman kod, anda perlu menggantikan pembolehubah SQL berkod keras dengan pernyataan yang disediakan dan mengikatnya. Walau bagaimanapun, anda menghadapi masalah menggunakan kaedah 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>
Apabila melaksanakan pernyataan SQL, ralat berikut berlaku:
<code>java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138)</code>
Masalahnya ialah pembolehubah tarikh dimulakan secara salah menggunakan 0000-00-00 sebagai nilai lalai. Untuk menyelesaikan isu ini, pertimbangkan alternatif berikut apabila berurusan dengan tarikh:
Untuk jadual dengan jenis lajur DATE:
Gunakan rentetan:
<code class="language-java"> ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
Gunakan java.util.Tarikh:
<code class="language-java"> ps.setDate(2, new java.sql.Date(endDate.getTime()));</code>
Dapatkan tarikh semasa:
<code class="language-java"> ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>
Untuk jadual dengan jenis lajur TIMESTAMP atau DATETIME:
Gunakan rentetan:
<code class="language-java"> ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));</code>
Gunakan java.util.Tarikh:
<code class="language-java"> ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
Dapatkan cap masa semasa:
<code class="language-java"> ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
Gunakan mana-mana kaedah di atas untuk menetapkan tarikh dengan betul dalam pernyataan yang disediakan, dengan itu mengelakkan ralat yang anda hadapi.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan setDate() dengan betul dalam Java PreparedStatements untuk Mengelakkan `IllegalArgumentException`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!