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

[SOLUCIONADO] Duda con transacciones.

Estas en el tema de Duda con transacciones. en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/03/2015, 19:39
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 48
Antigüedad: 10 años, 9 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
  #2 (permalink)  
Antiguo 21/03/2015, 19:58
 
Fecha de Ingreso: diciembre-2014
Ubicación: Lima
Mensajes: 68
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Duda con transacciones.

Pero haz probado si funciona, si inserta o actualiza el registro en la bd, esta bien de la forma que trabajas, si no guarda o actualiza, el problema no nos dice nada.
  #3 (permalink)  
Antiguo 21/03/2015, 20:03
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 48
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda con transacciones.

mas que nada es una duda, el lunes probare insitu los metodos. estoy haciendo un aporte por si alguien le sirve..
la verdad es que tenia mis dudas si tomaba bien los commit y los rollback. espero funcione. si tu dices que la forma en que se esta haciendo esta bien, igual es un alivio :D

Última edición por CHAEEZ; 21/03/2015 a las 20:12
  #4 (permalink)  
Antiguo 21/03/2015, 20:16
 
Fecha de Ingreso: diciembre-2014
Ubicación: Lima
Mensajes: 68
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Duda con transacciones.

Bueno, yo ya no trabajo de esa forma, ahora con los frameworks de persistencia me facilito un poco la vida.
Pero es casi igual a como lo trabajaba, yo solo creaba una conexion que es asi:
Código Java:
Ver original
  1. public class ConexionBD {
  2.    
  3.     private final String servidor = "localhost";
  4.     private final String bd = "bd";
  5.     private final String usuario = "root";
  6.     private final String password = "jelastic";
  7.  
  8.     public Connection getConexion() {
  9.         Connection cn = null;
  10.         try {
  11.             //MySQL
  12.             Class.forName("com.mysql.jdbc.Driver");
  13.             cn = DriverManager.getConnection("jdbc:mysql://"+servidor+"/"+bd+"", ""+usuario+"", ""+password+"");
  14.  
  15.         } catch (ClassNotFoundException e) {
  16.             cn = null;
  17.         } catch (SQLException e) {
  18.             cn = null;
  19.         }
  20.         return cn;
  21.     }
  22.  
  23. }

Y para insertar, actualizar, eliminar, buscar y mostrar una lista de objetos asi:
Código Java:
Ver original
  1. public class Operacion {
  2.    
  3.     public static String exeOperacion(String sql)//Metodo insertar, actualizar y eliminar
  4.     {
  5.         String msg=null;
  6.         try{
  7.             Connection cn=new ConexionBD().getConexion();
  8.             if(cn==null){
  9.                 msg="No hay Conexion con la Base de Datos";
  10.             }else{
  11.                 Statement st=cn.createStatement();
  12.                 st.executeUpdate(sql);
  13.                 cn.close();
  14.             }          
  15.         }catch(SQLException e){
  16.             msg=e.getMessage();
  17.             System.out.println(e.getMessage());
  18.         }
  19.         return msg;
  20.     }
  21.    
  22.     public static List getTabla(String sql){//Metodo para mostrar la tabla completa
  23.         List lista=new ArrayList();
  24.         try{
  25.             Connection cn=new ConexionBD().getConexion();
  26.             if(cn==null){//Comprobamos la conexion
  27.                 lista=null;
  28.             }else{//Hay conexion
  29.                 Statement st=cn.createStatement();
  30.                 ResultSet rs=st.executeQuery(sql);
  31.                 ResultSetMetaData rm=rs.getMetaData();
  32.                 int numCol=rm.getColumnCount();
  33.                 String[] titCol=new String[numCol];
  34.                 for(int i=0;i<numCol;i++)
  35.                    titCol[i]=rm.getColumnName(i+1);
  36.                 lista.add(titCol);
  37.                 while(rs.next()){
  38.                     Object[]fila=new Object[numCol];
  39.                     for(int i=0;i<numCol;i++)
  40.                         fila[i]=rs.getObject(i+1);
  41.                     lista.add(fila);
  42.                 }
  43.                 cn.close();
  44.             }
  45.         }catch(SQLException e){
  46.             lista=null;
  47.         }
  48.         return lista;
  49.     }
  50.     public static Object[] getFila(String sql){//Metodo que solo retorna una fila
  51.         Object[]fila=null;
  52.         List lista=getTabla(sql);//Llamamos al metodo getTabla
  53.         if(lista!=null){
  54.             if(lista.size()>1)
  55.                 fila=(Object[])lista.get(1);
  56.         }
  57.         return fila;
  58.     }
A mi me parece que trabajas igual, si en caso no sale, no olvides hacer debug.
  #5 (permalink)  
Antiguo 21/03/2015, 20:24
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 48
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda con transacciones.

Si, bastante parecido. El tema es que yo debo trabajar con commit y rollback ya que trabajo con una base de datos un poco desactualizado, Interbase 7.5 xD. Y si, hare un debug de algun error, y en caso de que el error persista, comentare en este post.
  #6 (permalink)  
Antiguo 22/03/2015, 04:34
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Duda con transacciones.

Cita:
El tema es que yo debo trabajar con commit y rollback ya que trabajo con una base de datos un poco desactualizado, Interbase 7.5
Si el driver funciona, puedes usar cualquier framework de persistencia, si controlas los commit y rollback es porque tú quieres.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 24/03/2015, 14:16
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 48
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Duda con transacciones.

Pude hacer transacciones. Funciona.! Lo marco como solucionado.

Etiquetas: Ninguno
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 09:23.