JDBC connexion par défaut en mode autoCommit comportement
je travaille avec JDBC pour me connecter à Oracle. J'ai testé connection.setAutoCommit(false)
et connection.setAutoCommit(true)
et les résultats ont été comme prévu.
Alors que par défaut, la connexion est censé fonctionner comme si autoCommit(true)
[corrigez - moi si je me trompe], mais aucun des enregistrements ne sont insérés avant connection.commit()
a été appelé. Des conseils sur le comportement par défaut?
String insert = "INSERT INTO MONITOR (number, name,value) VALUES (?,?,?)";
conn = connection; //connection details avoided
preparedStmtInsert = conn.prepareStatement(insert);
preparedStmtInsert.execute();
conn.commit();
1 réponses
Lorsqu'une connexion est créée, elle est en mode auto-commit. Cela signifie que chaque instruction SQL est traitée comme une transaction et est engagé automatiquement juste après son exécution. (Pour être plus précise, la valeur par défaut est QU'une instruction SQL doit être engagée quand elle est terminé, pas quand il est exécuté. Une déclaration est remplie lorsque tous de ses ensembles de résultats et des comptes de mise à jour ont été récupérée. Dans presque dans tous les cas, toutefois, une déclaration est remplie et, par conséquent,, juste après elle est exécutée.)
l'autre chose est-vous ommitted les détails de la création de connexion, donc je devine juste-si vous utilisez certains cadres, ou l'acquisition d'une connexion à partir d'une source de données ou d'un pool de connexion, le autocommit
peut être activé off
par ces cadres/piscines/sources de données - la solution est de ne jamais la confiance dans les paramètres par défaut ;-)