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 "をJDBC PreparedStatementを介して " 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());

完了しました。

date insert jdbc リンク://タグ/preparedstatement/[preparedstatement]