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

現在の日付値を挿入する方法がわかりません。 JDBC PreparedStatementを介して、「04/04/2011」を「CREATED_DATE」フィールドに入力します。

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

完了しました。