transaction statement settransactionisolation preparedstatement prepared parameter executeupdate example create begin oracle jdbc autocommit

oracle - settransactionisolation - prepared statement commit



Comportamiento autoCommit predeterminado de la conexión JDBC (1)

Estoy trabajando con JDBC para conectarme a Oracle. Probé connection.setAutoCommit(false) vs connection.setAutoCommit(true) y los resultados fueron los esperados.

Mientras que por defecto se supone que la conexión funciona como si autoCommit(true) [ autoCommit(true) si estoy equivocado], pero ninguno de los registros se está insertando hasta connection.commit() invocó connection.commit() . ¿Algún consejo sobre el comportamiento predeterminado?

String insert = "INSERT INTO MONITOR (number, name,value) VALUES (?,?,?)"; conn = connection; //connection details avoided preparedStmtInsert = conn.prepareStatement(insert); preparedStmtInsert.execute(); conn.commit();


De la documentación de Oracle JDBC :

Cuando se crea una conexión, está en modo autocompromiso. Esto significa que cada declaración SQL individual se trata como una transacción y se confirma automáticamente justo después de que se ejecuta. (Para ser más precisos, el valor predeterminado es que una declaración SQL se confirme cuando se completa, no cuando se ejecuta. Una declaración se completa cuando se han recuperado todos sus conjuntos de resultados y conteos de actualización . En casi todos los casos, sin embargo , se completa una declaración y, por lo tanto, se confirma, justo después de que se ejecuta).

La otra cosa es que usted omitió detalles de creación de conexión, así que estoy adivinando, si está utilizando algunos marcos o adquiriendo una conexión desde un origen de datos o grupo de conexiones, esos marcos / pools / datasources pueden off el autocommit la solución es nunca confiar en la configuración predeterminada ;-)