Insérer une valeur de date dans PreparedStatement
Problème
Un script de table simple dans la base de données 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 ) )
Je ne sais pas comment insérer la valeur de la date actuelle, par exemple «04/04/2011» dans le champ «CREATED_DATE», via JDBC PreparedStatement.
String insertTableSQL = "INSERT INTO DBUSER"
+ "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
+ "(?,?,?,?)";
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setDate(4, ???);
Solution
La méthode «preparedStatement.setDate()» consiste à accepter un paramètrejava.sql.Date, vous devez donc convertir dejava.util.Date enjava.sql.Date.
Par exemple, créez une méthode pour renvoyer la date actuelle et convertissez-lajava.sql.Date:
private static java.sql.Date getCurrentDate() {
java.util.Date today = new java.util.Date();
return new java.sql.Date(today.getTime());
}
Et définissez la date de retour viapreparedStatement.setDate().
String insertTableSQL = "INSERT INTO DBUSER"
+ "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
+ "(?,?,?,?)";
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setDate(4, getCurrentDate());
Terminé.