Um unsere Codebasis zu standardisieren, wurden wir damit beauftragt, alle Instanzen hartcodierter SQL-Variablen auf zu übertragen Vorbereitete Anweisungen mit gebundenen Variablen. Wir sind jedoch auf ein Problem mit der Methode setDate() gestoßen.
Der bereitgestellte Codeausschnitt lautet wie folgt:
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); 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));
Beim Ausführen der SQL-Abfrage ist der folgende Fehler aufgetreten:
java.lang.IllegalArgumentException at java.sql.Date.valueOf(Date.java:138) at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)
Die Die Methode setDate() erfordert einen gültigen Datumswert. In diesem Fall haben wir es auf new java.sql.Date(0000-00-00) gesetzt, was ein ungültiges Datum ist.
Um dieses Problem zu beheben, können die folgenden Lösungen in Betracht gezogen werden:
Wenn die Tabellenspalte eine hat DATE-Typ, die folgenden Optionen sind verfügbar:
java.lang.String: Verwenden Sie java.sql.Date.valueOf(java.lang.String) zum Parsen die Datumszeichenfolge im Format jjjj-[m]m-[t]d, z.B.:
ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
java.util.Date: Konvertieren Sie das java.util.Date-Objekt mit dem neuen java.sql.Date(endDate.getTime() ), z.B.:
ps.setDate(2, new java.sql.Date(endDate.getTime()));
Wenn die Tabellenspalte einen TIMESTAMP- oder DATETIME-Typ hat, sind die folgenden Optionen verfügbar verfügbar:
java.lang.String: Verwenden Sie java.sql.Timestamp.valueOf(java.lang.String), um die Datumszeichenfolge im Format JJJJ zu analysieren -[m]m-[d]d hh:mm:ss[.f…], z.B.:
ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00"));
java.util.Date: Konvertieren Sie das java.util.Date-Objekt mit dem neuen java.sql.Timestamp(endDate.getTime()) ), z.B.:
ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
Das obige ist der detaillierte Inhalt vonWie verwende ich setDate() in PreparedStatements richtig, um „java.lang.IllegalArgumentException' zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!