Foros del Web » Programación para mayores de 30 ;) » Java »

ROLLBACK en Oracle desde Java

Estas en el tema de ROLLBACK en Oracle desde Java en el foro de Java en Foros del Web. Saludos! Les cuento que tengo un pequeno metodo en Java en el cual ejecuto algunas sentencias contra una base de datos en ORACLE. En este ...
  #1 (permalink)  
Antiguo 22/03/2011, 17:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 1 mes
Puntos: 1
ROLLBACK en Oracle desde Java

Saludos!

Les cuento que tengo un pequeno metodo en Java en el cual ejecuto algunas sentencias contra una base de datos en ORACLE.

En este metodo ejecuto unos insert into sobre algunas tablas con diferentes statement.executeUpdate() de Java. El detalle esta que tengo que controlar que si alguna sentencia da error entonces tengo que hacer un ROLLBACK. Yo puedo controlar si una sentencia se ejecuto bien o no, lo que no se hacer es un ROLLBACK sobre la base de datos para que se reviertan todos los cambios.

Si estuviera en algun procedimiento en la base de datos, alguna funcion, stored procedure etc seguro que meteria todo dentro de una transaccion, bueno asi lo hacia con SQL Server, y listo, pero como lo que estoy haciendo es ejecutando diferentes sentencias desde la aplicacion, entonces no se como hacer el ROLLBACK.

Les agradeceria mucho su ayuda amigos.

Desde ya muchas gracias,

Saludos.
  #2 (permalink)  
Antiguo 22/03/2011, 18:22
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: ROLLBACK en Oracle desde Java

Java, al crear la conexion, crea un tipo de transaccion que autoconfirma al ejecutar el statement. Para deshabilitarlo, una vez que has establecido la conexion has de llamar al metodo conexion.setAutoCommit(false). Despues, en el momento que quieras hacer rollback, basta con llamar al metodo conexion.rollback(). Eso si, debes hacer un conexion.commit() para que se confirme la sentencia.

Ejemplo:
Código Java:
Ver original
  1. boolean quieroconfirmar=false;
  2. try{
  3. DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  4.  
  5. Connection conexion = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "user", "password");
  6. conexion.setAutoCommit(false);
  7.  
  8. Statement stmt = conn.createStatement ();
  9.  
  10. st.executeUpdate("insert into table_name values(xxxx, 'xxx');
  11.  
  12. if(quieroconfirmar==false){
  13. conexion.rollback();
  14. }else{
  15. conexion.commit();
  16. }
  17. st.close();
  18. conexion.close();
  19. }catch(SQLException sqle){
  20. System.out.println(sqle);
  21. }

El ejemplo de arriba insertaria unos datos en una tabla, y dependiendo del valor de quieroconfirmar, los confirmaria o haria un rollback.

Espero que te haya servido, Un saludo!

Última edición por javiDP; 22/03/2011 a las 18:32

Etiquetas: oracle, rollback
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:54.