Heim > Datenbank > MySQL-Tutorial > Wie verwende ich setDate() in PreparedStatements richtig, um IllegalArgumentException zu vermeiden?

Wie verwende ich setDate() in PreparedStatements richtig, um IllegalArgumentException zu vermeiden?

DDD
Freigeben: 2025-01-18 22:36:11
Original
228 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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:

  • Verwenden einer Zeichenfolge: ps.setDate(2, java.sql.Date.valueOf("2013-09-04")); (Stellen Sie sicher, dass das Format „JJJJ-MM-TT“ vorliegt)
  • Verwenden eines java.util.Date: ps.setDate(2, new java.sql.Date(endDate.getTime()));
  • Aktuelles Datum verwenden: ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));

Für TIMESTAMP- oder DATETIME-Spalten:

  • Verwenden einer Zeichenfolge: 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)
  • Verwenden eines java.util.Date: ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
  • Unter Verwendung des aktuellen Zeitstempels: 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage