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

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

DDD
Lepaskan: 2025-01-18 22:36:11
asal
264 orang telah melayarinya

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

Kaedah setDate() PreparedStatement: Amalan Terbaik untuk Mencegah Ralat

Berhijrah kepada pernyataan yang disediakan meningkatkan ketekalan kod, tetapi penggunaan setDate() kadangkala boleh menyebabkan ralat IllegalArgumentException. Mari kita periksa cara untuk mengelakkan isu ini.

Pertimbangkan coretan kod bermasalah ini:

<code class="language-java">DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date now = new Date();
String vDateYMD = dateFormatYMD.format(now);
String vDateMDY = dateFormatMDY.format(now);
String vDateMDYSQL =  vDateMDY ;
java.sql.Date date = new java.sql.Date(0000-00-00); //Incorrect date initialization

requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," + 
             " ORDER_DT, FOLLOWUP_DT) " +  "values(?,?,?,)";

prs = conn.prepareStatement(requestSQL);
prs.setInt(1,new Integer(requestID));
prs.setDate(2,date.valueOf(vDateMDYSQL));
prs.setDate(3,date.valueOf(sqlFollowupDT));</code>
Salin selepas log masuk

IllegalArgumentException berkemungkinan berpunca daripada pengendalian tarikh yang tidak betul. Elakkan daripada menggunakan date.valueOf() dengan rentetan yang tidak konsisten diformatkan dan permulaan tarikh yang salah.

Pendekatan Betul Menggunakan java.sql.Date dan java.sql.Timestamp

Berikut ialah cara menggunakan setDate() dan setTimestamp() dengan betul untuk jenis lajur pangkalan data yang berbeza:

Untuk lajur DATE:

  • Menggunakan Rentetan: ps.setDate(2, java.sql.Date.valueOf("2013-09-04")); (Pastikan format "YYYY-MM-DD")
  • Menggunakan java.util.Date: ps.setDate(2, new java.sql.Date(endDate.getTime()));
  • Menggunakan tarikh semasa: ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));

Untuk lajur TIMESTAMP atau DATETIME:

  • Menggunakan Rentetan: ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00")); (Pastikan format "YYYY-MM-DD HH:mm:ss")
  • Menggunakan java.util.Date: ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
  • Menggunakan cap masa semasa: ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));

Dengan mematuhi amalan terbaik ini dan menggunakan jenis dan format data yang sesuai, anda boleh menggunakan setDate() dan setTimestamp() dengan pasti dalam penyataan anda yang disediakan, mencegah IllegalArgumentException ralat dan memastikan integriti data. Ingat untuk sentiasa memadankan format rentetan tarikh/masa anda dengan jangkaan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan setDate() dengan betul dalam 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