Java - CAPTURAR EXCEPCION

 
Vista:

CAPTURAR EXCEPCION

Publicado por SARA (58 intervenciones) el 06/09/2005 12:59:47
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;
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CAPTURAR EXCEPCION

Publicado por chuidiang (532 intervenciones) el 06/09/2005 15:40:12
Hola:

Cuando capturas la excepcion, llega al return -1 y termina. Debes capturar la excepcion dentro del bucle y no hacer return. La idea es básicamente esta

mientras haya lineas en el fichero
leer linea
try
ejecutar sql
catch exception
siguiente linea.

Se buena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:CAPTURAR EXCEPCION

Publicado por Alberto (1 intervención) el 07/09/2005 10:59:29
Cuando salta al catch todas las variables de sesión desaparecen. Por lo que si necesitas hacer de nuevo a lectura en la BBDD deberías implementarlos desde 0 después del catch
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar