Heim >Datenbank >MySQL-Tutorial >Wie verwende ich setDate() in PreparedStatements richtig, um IllegalArgumentException zu vermeiden?
setDate()-Methode von PreparedStatement: Best Practices zur Fehlervermeidung
Die Migration zu vorbereiteten Anweisungen verbessert die Codekonsistenz, aber die Verwendung von setDate()
kann manchmal zu IllegalArgumentException
-Fehlern führen. Lassen Sie uns untersuchen, wie Sie diese Probleme vermeiden können.
Bedenken Sie diesen problematischen Codeausschnitt:
<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>
Das IllegalArgumentException
ist wahrscheinlich auf unsachgemäßen Umgang mit Datumsangaben zurückzuführen. Vermeiden Sie die Verwendung von date.valueOf()
bei inkonsistent formatierten Zeichenfolgen und falscher Datumsinitialisierung.
Korrekte Ansätze mit java.sql.Date
und java.sql.Timestamp
So verwenden Sie setDate()
und setTimestamp()
für verschiedene Datenbankspaltentypen richtig:
Für DATE-Spalten:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
(Stellen Sie sicher, dass das Format „JJJJ-MM-TT“ vorliegt)ps.setDate(2, new java.sql.Date(endDate.getTime()));
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
Für TIMESTAMP- oder DATETIME-Spalten:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
(Stellen Sie sicher, dass das Format „JJJJ-MM-TT HH:mm:ss“ vorliegt)ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
Durch die Einhaltung dieser Best Practices und die Verwendung der entsprechenden Datentypen und -formate können Sie setDate()
und setTimestamp()
zuverlässig in Ihren vorbereiteten Kontoauszügen verwenden, wodurch IllegalArgumentException
Fehler verhindert und die Datenintegrität sichergestellt wird. Denken Sie daran, Ihre Datums-/Uhrzeitzeichenfolgenformate immer an die Erwartungen der Datenbank anzupassen.
Das obige ist der detaillierte Inhalt vonWie verwende ich setDate() in PreparedStatements richtig, um IllegalArgumentException zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!