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.