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