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
413 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

<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>
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:

    <code class="language-java">  ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
    Salin selepas log masuk
  • Gunakan java.util.Tarikh:

    <code class="language-java">  ps.setDate(2, new java.sql.Date(endDate.getTime()));</code>
    Salin selepas log masuk
  • Dapatkan tarikh semasa:

    <code class="language-java">  ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>
    Salin selepas log masuk

java.sql.Timestamp

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>
    Salin selepas log masuk
  • Gunakan java.util.Tarikh:

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
    Salin selepas log masuk
  • Dapatkan cap masa semasa:

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
    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!

sumber:php.cn
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