Datumswert in PreparedStatement einfügen

Geben Sie den Datumswert in PreparedStatement ein

Problem

Ein einfaches Tabellenskript in der Oracle-Datenbank.

CREATE TABLE DBUSER (
  USER_ID       NUMBER (5)    NOT NULL,
  USERNAME      VARCHAR2 (20)  NOT NULL,
  CREATED_BY    VARCHAR2 (20)  NOT NULL,
  CREATED_DATE  DATE          NOT NULL,
  PRIMARY KEY ( USER_ID )
 )

Keine Ahnung, wie der aktuelle Datumswert eingefügt werden soll, z. "04/04/2011" in das Feld "CREATED_DATE" über JDBC PreparedStatement.

String insertTableSQL = "INSERT INTO DBUSER"
        + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
        + "(?,?,?,?)";
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setDate(4, ???);

Lösung

Die Methode „preparedStatement.setDate()“ akzeptiert einenjava.sql.Date-Parameter. Sie müssen also vonjava.util.Date injava.sql.Date konvertieren.

Erstellen Sie beispielsweise eine Methode, um das aktuelle Datum zurückzugeben, und konvertieren Sie es injava.sql.Date:

private static java.sql.Date getCurrentDate() {
    java.util.Date today = new java.util.Date();
    return new java.sql.Date(today.getTime());
}

Und setzen Sie das Rückgabedatum überpreparedStatement.setDate().

String insertTableSQL = "INSERT INTO DBUSER"
    + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
    + "(?,?,?,?)";
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setDate(4, getCurrentDate());

Erledigt.