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
DDDOriginal
2025-01-18 22:27:11415Durchsuche

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>

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>

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>
  • Verwenden Sie java.util.Date:

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

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

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>
  • Verwenden Sie java.util.Date:

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

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

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!

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