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();
19
demandé sur informatik01 2012-06-13 22:42:19

1 réponses

Oracle JDBC documentation:

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 ;-)

23
répondu npe 2012-06-13 20:03:21