Bloques Try Catch

ross_av
15 de Abril del 2004
Me gustaría saber cómo puedo utilizar variables del bloque try en el bloque catch.

Muchas gracias.

maramonar
15 de Abril del 2004
Definí las variables fuera del bloque try..
Connection conn = null;
try {
conn = ds.getConnection();
.......
} catch(Exception e) {
if (conn != null) {
----hacer algo con conn
}
}

ross_av
15 de Abril del 2004
Es lo que hago, envío el código para ver si sabes por qué me da error.

Me dice:

Error al ejecutar SQL en Actualización DELETE: No data found

void Actualizar_actionPerformed(ActionEvent e) {
Statement stmt = null;
ResultSet rs = null;
String s;
try {
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT URL FROM ENLACES");
while (rs.next()){
s = "http://" + rs.getString("URL");
URL miURL = new URL(s);
URLConnection conexion = miURL.openConnection();
DataInputStream dis = new DataInputStream(conexion.getInputStream());
String inputLine;
while ((inputLine = dis.readLine()) != null) {
System.out.println(inputLine);
}
dis.close();
}
//Cerrar la conexión
rs.close();
stmt.close();
}
catch (MalformedURLException ex) {//Nueva URL() falla
System.err.println("Error al crear la URL: " + ex.getMessage());
}
catch(SQLException exc) {
System.err.println("Error al ejecutar SQL en Actualización SELECT: " + exc.getMessage());
}
catch (IOException ioe) {//openConnection() falla
try {
//Si no encuentra la página web
stmt.executeUpdate("DELETE FROM ENLACES WHERE URL = '" + rs.getString("URL") + "'");
System.out.println("La Base de Datos se ha actualizado correctamente.");
}
catch (SQLException exce) {
System.err.println("Error al ejecutar SQL en Actualización DELETE: " + exce.getMessage());
}
}
}

eniak
15 de Abril del 2004
prueva usando esta sentencia depronto te sirva, esta es la forma que utilizo el delete
if (conn != null)
{
Statement stmt = conn.createStatement();
stmt = conn.createStatement();
stmt.addBatch("DELETE FROM ENLACES WHERE URL = '" + rs.getString("URL") + "'"); int[] updateCounts = stmt.executeBatch();
}

maramonar
15 de Abril del 2004
Parecería que el problema es que no encuentra que borrar con la sentencia DELETE que estas armando. Intentá sacar a la consola la sentencia DELETE y fijate si realmente queda bien formulada.