J'ai créé une application Web Java, dans laquelle j'utilise Spring JDBC Framework, afin d'écrire mes requêtes pour la base de données DB2. Jusqu'à présent, toutes les requêtes fonctionnent très bien.Comment insérer un horodatage "null" avec Spring JDBC Framework dans une base de données DB2
J'ai essayé aujourd'hui de créer une requête INSERT pour une table que j'ai dans ma base de données. La requête est vraiment forword droite, il fonctionne comme requête DB2 et il ressemble à ceci:
INSERT INTO MYDB.USERSUBSCRIPTION (USERNAME, SUBSCRIPTIONDATETIME, UNSUBSCRIPTIONDATETIME)
VALUES('JamesTheBoss', '2017-07-07 07:07:07.007', null);
Dans ma classe Java j'ai créé les méthodes suivantes:
private Timestamp getCurrentDateTimeInTimeStamp() {
LocalDateTime currentDateAndTime = LocalDateTime.now();
currentDateAndTime.format(DateTimeFormatter.ofPattern("yyy-MM-dd HH:MM:SS.mm")).replaceAll("T", " ");
Timestamp timestamp = Timestamp.valueOf(currentDateAndTime);
return timestamp;
}
public void insertNewUserToDatabase(String username){
Timestamp timestamp = getCurrentDateTimeInTimeStamp();
String SQL = "INSERT INTO MYDB.USERSUBSCRIPTION (USERNAME, SUBSCRIPTIONDATETIME, UNSUBSCRIPTIONDATETIME) " +
"VALUES(?, ?, ?)";
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
jdbcTemplateObject.update(SQL,new Object[] { username, timestamp, null});
}
Ma première requête a été la suivante:
public List<UserSubscription> getAllUserSubscriptions() throws SQLException {
String SQL = "SELECT * FROM MYDB.USERSUBSCRIPTION";
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
List<UserSubscription> userSubscription = jdbcTemplateObject.query(SQL, new UserSubscriptionMapper());
return userSubscription;
}
et cela fonctionne très bien, comme toutes les autres requêtes que j'ai écrites aussi.
Lorsque j'essaie d'insérer "null" en tant que paramètre Timestamp dans la requête, je deviens une exception.
Comment puis-je insérer une valeur "null" pour un horodatage en utilisant le Spring JDBC Framework?
J'apprécierais vraiment avoir un commentaire.
Vous devez nous indiquer l'exception. Et comment les tables de votre base de données sont définies. La colonne Timestamp est-elle définie comme nulle dans la base de données? – Ben