pourquoi ne executeUpdate retour 1, même si aucune nouvelle ligne a été insérée?
voici ma table très très simple (Postgres):
CREATE TABLE IF NOT EXISTS PERFORMANCE.TEST
(
test text NOT NULL UNIQUE
);
si j'essaie d'insérer une Chaîne de caractères à l'aide de la commande ci-dessous à PARTIR de la base de données,tout fonctionne comme prévu, il n'est pas surprenant une nouvelle ligne apparaît dans la DB.
insert into performance.test (test) values ('abbbbaw');
Cependant, si je veux insérer une Chaîne de caractères via JDBC, rien n'est inséré, bien que preparedStatement.executeUpdate() renvoie toujours 1.
Ci-dessous est ma méthode de travail, mais il ne le fait pas. S'il vous plaît dites-moi si je suis absent quelque chose d'évident.
Je tiens à ajouter que je n'ai jamais eu aucun SQLException.
private void storePerformance() {
Connection conn= initializePerformanceConnection();
if (conn!= null) {
PreparedStatement insertPS = null;
try {
insertPS = conn.prepareStatement("insert into performance.test (test) values (?)");
insertPS.setString(1, queryVar);
int i = insertPS.executeUpdate();
LogManager.doLog(LOG, LOGLEVEL.INFO," numberofrows= "+i);
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Inserting query failed = "+queryVar,e);
}finally{
if(insertPS != null){
try {
insertPS.close();
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Closing PreparedStatement failed = "+queryVar,e);
}
}
try {
conn.close();
} catch (SQLException e) {
LogManager.doLog(LOG, LOGLEVEL.INFO,"Closing performanceConnection failed= "+ queryVar, e);
}
}
}
}
OriginalL'auteur Sanyifejű | 2013-04-11
Vous devez vous connecter pour publier un commentaire.
qui manquait:
(après la executeUpdate())
en fait d'une nouvelle ligne a été insérée, mais la DB annulée immédiatement.
Avez-vous le programme d'installation en mode autocommit comme faux?
OriginalL'auteur Sanyifejű
executeupdate est un "update table set colonne = valeur". Pour insérer appelez simplement exécuter des PreparedStatement.
OriginalL'auteur Jan Piel