Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggunakan setDate() dengan betul dalam Java PreparedStatements untuk Mengelakkan `IllegalArgumentException`?

Bagaimana untuk Menggunakan setDate() dengan betul dalam Java PreparedStatements untuk Mengelakkan `IllegalArgumentException`?

DDD
Lepaskan: 2025-01-18 22:27:11
asal
466 orang telah melayarinya

How to Correctly Use setDate() in Java PreparedStatements to Avoid `IllegalArgumentException`?

Gunakan kaedah setDate() dalam PreparedStatement

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().

Kod asal

String vDateMDYSQL = vDateMDY;
java.sql.Date date = new java.sql.Date(0000-00-00);
...
prs.setDate(2, date.valueOf(vDateMDYSQL));
Salin selepas log masuk

Ralat ditemui

Apabila melaksanakan pernyataan SQL, ralat berikut berlaku:

<code>java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)</code>
Salin selepas log masuk

Alternatif

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:

java.sql.Date

Untuk jadual dengan jenis lajur DATE:

  • Gunakan rentetan:

      ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
    Salin selepas log masuk
  • Gunakan java.util.Tarikh:

      ps.setDate(2, new java.sql.Date(endDate.getTime()));
    Salin selepas log masuk
  • Dapatkan tarikh semasa:

      ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
    Salin selepas log masuk

java.sql.Timestamp

Untuk jadual dengan jenis lajur TIMESTAMP atau DATETIME:

  • Gunakan rentetan:

      ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
    Salin selepas log masuk
  • Gunakan java.util.Tarikh:

      ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
    Salin selepas log masuk
  • Dapatkan cap masa semasa:

      ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
    Salin selepas log masuk

    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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan