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
DDDasal
2025-01-18 22:27:11450semak imbas

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>

Ralat ditemui

Apabila melaksanakan pernyataan SQL, ralat berikut berlaku:

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

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

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>
  • 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!

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