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

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

DDD
Freigeben: 2025-01-18 22:27:11
Original
413 Leute haben es durchsucht

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

Verwenden Sie die setDate()-Methode in PreparedStatement

Um die Codestandardisierung zu verbessern, müssen Sie hartcodierte SQL-Variablen durch vorbereitete Anweisungen ersetzen und diese binden. Bei der Verwendung der setDate()-Methode tritt jedoch ein Problem auf.

Originalcode

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

Fehler aufgetreten

Beim Ausführen der SQL-Anweisung ist der folgende Fehler aufgetreten:

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

Alternativen

Das Problem besteht darin, dass die Datumsvariable falsch mit 0000-00-00 als Standardwert initialisiert wird. Um dieses Problem zu beheben, ziehen Sie beim Umgang mit Datumsangaben die folgenden Alternativen in Betracht:

java.sql.Date

Für Tabellen mit dem Spaltentyp DATE:

  • Verwenden Sie die Zeichenfolge:

    <code class="language-java">  ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));</code>
    Nach dem Login kopieren
  • Verwenden Sie java.util.Date:

    <code class="language-java">  ps.setDate(2, new java.sql.Date(endDate.getTime()));</code>
    Nach dem Login kopieren
  • Aktuelles Datum abrufen:

    <code class="language-java">  ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));</code>
    Nach dem Login kopieren

java.sql.Timestamp

Für Tabellen mit den Spaltentypen TIMESTAMP oder DATETIME:

  • Verwenden Sie die Zeichenfolge:

    <code class="language-java">  ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));</code>
    Nach dem Login kopieren
  • Verwenden Sie java.util.Date:

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));</code>
    Nach dem Login kopieren
  • Holen Sie sich den aktuellen Zeitstempel:

    <code class="language-java">  ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));</code>
    Nach dem Login kopieren

Verwenden Sie eine der oben genannten Methoden, um das Datum in der vorbereiteten Anweisung korrekt festzulegen und so den aufgetretenen Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie verwende ich setDate() in Java 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