Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/09/2005, 04:53
CARCAHARAS
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 19 años
Puntos: 0
capturar excepcion

hola, tengo una clase java que lo que hace es ejecutar unas sentencias sql que estan almacenadas en un fichero. si una de las sentencias es un drop table de una tabla que no existe quiero que la clase la ignore y siga ejecutando la clase no se si me entendeis. El caso es que yo capturo la excepcion y digo que no haga nada, aun así la ejecucion de la clase se para y no continua leyendo el fichero, Os pongo el codigo a ver si me podeis decir lo que hago mal ok? fijaros sobre todo en el catch que supongo que es donde tendre el error. Muchas gracias!

public int EjecutarFichero(String usuario, String password,
String identificador) {
GestorDeConexiones gdc = new GestorDeConexiones();
java.io.FileOutputStream fichero = null;
FileInputStream ficheroEntrada = null;
byte[] buffer = new byte[1024];
//me creo el fichero donde almacenare la informacion a ejecutar
String path = "C:/scriptCreaBd.txt";
File f = new File(path);
try {
fichero = new FileOutputStream(f);
}
catch (FileNotFoundException fe) {
fe.printStackTrace();
return -1;
}

//relleno ese fichero con la informacion que me interesa
try {
Connection con = gdc.ConexionServauto("system", "sara_system");
String query1 = "SELECT SCRIPT FROM ESQ_BD WHERE identificador='" +
identificador + "'";
PreparedStatement ps = con.prepareStatement(query1);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int size;
java.io.InputStream is = (rs.getClob(1)).getAsciiStream();
while ( (size = is.read(buffer)) != -1) {
fichero.write(buffer, 0, size);
fichero.flush();
}
con.close();
con = gdc.ConexionAlumno(usuario, password);
Statement stm = con.createStatement();
ficheroEntrada = new FileInputStream(f);
String scriptf = "";
while ( (size = ficheroEntrada.read(buffer)) != -1) {
String script = new String(buffer, 0, size);
scriptf = scriptf + script;
}
StringTokenizer str = new StringTokenizer(scriptf, ";");
while (str.hasMoreTokens()) {
String batch = str.nextToken();
stm.addBatch(batch);
}
stm.executeBatch();
f.delete();
return 0;

}
else {
return -1;
}

}
catch (Exception ex) {
if(ex.getMessage().equalsIgnoreCase("ORA-00942"))
{}
return -1;
}

}