Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/06/2012, 07:35
Avatar de rodno
rodno
 
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Transacciones con JDBC

Buenas, estoy realizando un metodo que me permita importar de un fichero que posee sentencias SQL, Create e Insert, entonces quiero hacer mediante una transaccion,
que se realice todo o nada, lo estoy realizando de la siguiente forma,

try {
conexion = new JDBCAdapter(Global.getConectionActive());
conexion.GetConnection().setAutoCommit(false);
java.sql.Statement stmt = conexion.GetConnection().createStatement();

for (int i = listTables.length - 1; i >= 0 ; i--) {
stmt.addBatch("TRUNCATE "+listTables[i]+";"); // Vaciar Tablas
}

for (int j = 0; j < querysArray.length; j++) {
stmt.addBatch(querysArray[j]+";"); // Ejecutar los Insert

}
int [] countCreateInsert = stmt.executeBatch();

conexion.GetConnection().commit(); //This commits the transaction and starts a new one.
conexion.GetConnection().setAutoCommit(true);
stmt.close();

}
catch (SQLException ex) {
ex.printStackTrace();
try {
System.out.println("Transaction failed.");
conexion.GetConnection().rollback();
System.out.println("rollBack.");
return false;
}
catch (SQLException se) {
se.printStackTrace();
System.out.println("Transaction failed2.");
return false;
}

}

Esto me funciona bien, pero cuando alguna de las consultas tiene un error, no me hace el rollback,

Son bastantes consultas no se si esto tendra que ver,

Gracias de ante mano
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..