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.
String vDateMDYSQL = vDateMDY; java.sql.Date date = new java.sql.Date(0000-00-00); ... prs.setDate(2, date.valueOf(vDateMDYSQL));
Beim Ausführen der SQL-Anweisung ist der folgende Fehler aufgetreten:
<code>java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138)</code>
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:
Für Tabellen mit dem Spaltentyp DATE:
Verwenden Sie die Zeichenfolge:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
Verwenden Sie java.util.Date:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
Aktuelles Datum abrufen:
ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
Für Tabellen mit den Spaltentypen TIMESTAMP oder DATETIME:
Verwenden Sie die Zeichenfolge:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
Verwenden Sie java.util.Date:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
Holen Sie sich den aktuellen Zeitstempel:
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
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!