Insérer une valeur d'horodatage 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 une valeur d'horodatage, par exemple «04/04/2011 14:45:04» 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.setTimestamp(4,???);
Solution
Créez une méthode pour renvoyer l'horodatage actuel (java.sql.Timestamp
) comme ceci:
private static java.sql.Timestamp getCurrentTimeStamp() { java.util.Date today = new java.util.Date(); return new java.sql.Timestamp(today.getTime()); }
Et définissez l'horodatage viapreparedStatement.setTimestamp()
.
String insertTableSQL = "INSERT INTO DBUSER" + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES" + "(?,?,?,?)"; preparedStatement = dbConnection.prepareStatement(insertTableSQL); preparedStatement.setTimestamp(4,getCurrentTimeStamp());
Note
Se référer à ceJDBC
PreparedStatement insert timestamp example complet.