Вставить значение даты в PreparedStatement

Вставить значение даты в PreparedStatement

проблема

Простой скрипт таблицы в базе данных Oracle.

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 )
 )

Не знаю, как вставить текущее значение даты, например «04/04/2011» в поле «CREATED_DATE» через JDBC PreparedStatement.

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

Решение

Метод «preparedStatement.setDate()» принимает параметрjava.sql.Date, поэтому вам нужно преобразовать изjava.util.Date вjava.sql.Date.

Например, создайте метод для возврата текущей даты и конвертируйте ее вjava.sql.Date:

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

И установите возвращаемую дату черезpreparedStatement.setDate().

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

Готово.