J'ai quelques enregistrements à importer. C'est bon la première fois quand ils sont insérés. Si j'essaie d'importer à nouveau les mêmes données, je reçois un org.postgresql.util.PSQLException: ERROR: la valeur de la clé en double viole la contrainte unique. Comment puis-je mettre à jour les enregistrements dans la base de données si les données sont identiques/ou modifiées et insérer si c'est de nouvelles données en utilisant JDBC?Insérer ou mettre à jour une table à l'aide de JDBC
public void store(Object entity) throws Exception {
try {
if (this.updateEntity((XEntity) entity) == 0) {
this.insertEntity((XEntity) entity);
}
...
} catch (SQLException sqlEx) {
...
}
}
private int updateEntity(XEntity entity) throws SQLException {
PreparedStatement prepStmt = this.getUpdatePreparedStmt();
...
return prepStmt.executeUpdate();
}
private void insertEntity(XEntity entity) throws SQLException {
...
this.getInsertPreparedStmt().executeUpdate();
}
Le problème est maintenant résolu. J'ai fourni une réponse ci-dessous.
Qu'est-ce que XEntity? –
Vous semblez être dans les premières étapes de votre implémentation. Avez-vous envisagé d'utiliser JPA ou Hibernate à la place pour gérer la persistance? Existe-t-il des exigences particulières qui nécessitent un accès JDBC de bas niveau? –
Vous devriez comprendre pourquoi "this.updateEntity ((XEntity) entity) == 0". – pinichi