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());
完了しました。