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().
String vDateMDYSQL = vDateMDY; java.sql.Date date = new java.sql.Date(0000-00-00); ... prs.setDate(2, date.valueOf(vDateMDYSQL));
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:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
Gunakan java.util.Tarikh:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
Dapatkan tarikh semasa:
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
Untuk jadual dengan jenis lajur TIMESTAMP atau DATETIME:
Gunakan rentetan:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
Gunakan java.util.Tarikh:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
Dapatkan cap masa semasa:
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
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!