Detectar desconexión de red local (o internet)

Estoy desarrollando una aplicación que se conecta con SQL Server y MySQL. En cualquiera de los casos, cuando ejecuto un método que me permita actualizar u obtener datos de una base de datos después de haber desconectado físicamente el cable de internet, la aplicación queda colgada. No entiendo por qué el bloque Try...Catch no detecta ese error para poder tratarlo.

Quisiera una ayuda al respecto, brindándome un código fuente o una porción de ello.

1 Respuesta

Respuesta
1

Para evitar esos problemas, trataria de realizar la manipulacion de datos(update, insert, delete) dentro de una transaccion. De todos modos regalame una porcion de codigo y miro en que te puedo ayudar.

Hola:

Sí utilizo transacciones de base de datos, pero en un nivel superior, y sólo necesito saber qué hacer para que cuando ejecute las sentencias: "select", "insert", "update", "delete" (y supongo que otros más) no se quede colgado.

Te mando una porción de mi código:

public Connection con = null;
private Statement st = null;

···

// Código para conexión, etc.

···

public void ejecutarActualizacion(String strSql) throws Exception

{

<strong style="line-height: 1.5em;"> st = con.createStatement(); // Aquí pasa.

st.setQueryTimeout(CfgGeneral.tiempofueraconsulta); // Aquí pasa.

st.executeUpdate(strSql); // Aquí se queda colgado y no pasa.

}

Gracias.

Es muy extraño lo que me comentas, hice prueba desconectando el cable y siempre se ejecuta una excepción. Imagino que sa función ejecutarActualizacion, esta encerrada en el try. Quedaría mas o menos a si:

int ConError=0;
try{
//Ejecuta las sentencias
 st = con.createStatement();  // Aquí pasa.
 st.setQueryTimeout(CfgGeneral.tiempofueraconsulta); // Aquí pasa.
 st.executeUpdate(strSql); // Aquí se queda colgado y no pasa.
}catch (Exception ex) {
 System.out.println("--------Error--------" + ex.getMessage());
ConError=1;
 }//Fin try
return ConError;

Claro que la función ya no seria void sino int, y cuando retorne 1 te indica que sucedió un error y podrás abordar la transacción. Si no entiendes muy bien, pásame el código fuente y miro en que te puedo ayudar.

OK.

Gracias por la ayuda, no había hecho el Try...Catch al bloque que ejecuta la consulta, aunque me parece haberlo hecho eso anteriormente, pero sólo a la línea de st.executeUpdate(strSql) sin respuesta alguna.

Igual, funcionó.

Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas