Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2015, 19:39
CHAEEZ
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 48
Antigüedad: 10 años, 10 meses
Puntos: 0
Duda con transacciones.

buenas noches chiquillos! tengo una duda con unos metodos que cree para las transacciones (commit() y rollback())
Por ejemplo, este metodo lo utilizo para la conectarme a BD.

Código Java:
Ver original
  1. public static void conectar() {
  2.            
  3.         try {
  4.             Class.forName(driver);
  5.             conexion = DriverManager.getConnection(server, user, password);
  6.             conexion.setAutoCommit(false);
  7.             System.out.println("Éxito: Se hizo la conexión a BD.");
  8.         } catch (Exception e) {
  9.             JOptionPane.showMessageDialog(null, "Error: Imposible realizar la conexion a BD.");
  10.             e.printStackTrace();
  11.         }
  12.        
  13.     }

Luego, el siguiente metodo lo utilizo para realizar insert, update o delete en su defecto.


Código Java:
Ver original
  1. public boolean consultaActualiza(String sql) {
  2.         try {
  3.             Statement sentencia = conexion.createStatement();
  4.             sentencia.executeUpdate(sql);
  5.            
  6.         } catch (SQLException e) {
  7.            
  8.             e.printStackTrace();
  9.             return false;
  10.         }
  11.         return true;
  12.         }

Y estos dos ultimos metodos solo los que utilizo para el commit y rollback:


Código Java:
Ver original
  1. public static void Commit() {
  2.         try {
  3.             conexion.commit();
  4.             JOptionPane.showMessageDialog(null, "Transacción exitosa.");
  5.         } catch (SQLException ex) {
  6.             Logger.getLogger(bdConexion.class.getName()).log(Level.SEVERE, null, ex);
  7.         }
  8.        
  9.     }
  10.    
  11.     public static void Rollback() {
  12.         try {
  13.             conexion.rollback();
  14.         } catch (SQLException ex) {
  15.             Logger.getLogger(bdConexion.class.getName()).log(Level.SEVERE, null, ex);
  16.         }
  17.         JOptionPane.showMessageDialog(null, "No se completó la transacción.");
  18.     }


No los he probado, pero quiero sacarme las dudas y si tienen alguna sugerencia bacan seria.

Para utilizarlas seria algo como :

Código Java:
Ver original
  1. MySQLBD baseDatos = new MySQLBD();
  2.          
  3.         if (baseDatos.consultaActualiza("INSERT INTO TEST(IDENTIFICADOR,DESCRIPCION) VALUES(3,'TRES')")) {
  4.           baseDatos.Commit();
  5.             System.out.println("Ejecución correcta!");
  6.         } else {
  7.            baseDatos.Rollback();
  8.             System.out.println("Ocurrió un problema al ejecutar!");
  9.         }        ResultSet resultados = baseDatos.consultar("SELECT * FROM TEST");        if (resultados != null) {
  10.             try {
  11.                 System.out.println("IDENTIFICADOR       DESCRIPCION");
  12.                 System.out.println("--------------------------------");
  13.                 while (resultados.next()) {
  14.                     System.out.println(""+resultados.getBigDecimal("IDENTIFICADOR")+"       "+resultados.getString("DESCRIPCION"));
  15.                 }
  16.             } catch (Exception e) {
  17.                 e.printStackTrace();
  18.             }
  19.         }

Ayudenme porfavor a salir de mi duda!! :D

Última edición por CHAEEZ; 21/03/2015 a las 19:49