Java - evento on dispose, existe?

 
Vista:
sin imagen de perfil
Val: 111
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

evento on dispose, existe?

Publicado por Gonzalo (112 intervenciones) el 28/04/2016 23:22:12
Buenos dias

tengo un programa que se conecta a una base de datos, aqui el problema que tengo es que si el usuario da click en la X para cerrar el programa entonces no desconecta la base de datos y la siguiente vez que trata de conectarse no lo deja porque todavia esta activo.

hay alguna forma de detectar si la ventana fue cerrada sin usar la opcion logout o exit del menu?

algun evento "on close" o tal vez "on dispose"?
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
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

evento on dispose, existe?

Publicado por Yamil Bracho (2315 intervenciones) el 29/04/2016 05:43:45
Estas usando Swing ? Si es asi solo agrega un WindowListener a tu JFrame principal. Por ejemplo :

1
2
3
4
5
6
mainFrame.addWindowListener(new java.awt.event.WindowAdapter() {
        public void windowClosing(WindowEvent winEvt) {
            db.close();
            System.exit(0);
        }
    });
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

evento on dispose, existe?

Publicado por SinOjo (8 intervenciones) el 29/04/2016 21:52:59
Para cerrar un JDialog, JFrame, JInternalFrame, JWindow existe el método dispose();
Para terminar la ejecución de un programa salir de el, esta el metodo System.exit(0);
Ahora si tu programa sigue activa la conexión a la bd es porque no la cerraste.
Ejemplo 1 cerrar conexión a la base:
1
2
3
4
5
6
7
8
9
10
//Aqui lo cierra la conexón en automatico la vm
try (Connection con = DriverManager.getConnetion(url,"usuario","contraseña");
      PrepaseStatement pstm = con.prepareStatement(selectSQL);
      ResulSet resultado = pstm.executeQuery()) {
      while(resultado.next()) {
       //Obtenemos valores de la base
     }
  } catch(SQLException e) {
   System.out,println(e.getCause());
 }

La seguna forma la hace uno manual.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try {
       Connection con = DriverManager.getConnetion(url,"usuario","contraseña");
      PrepaseStatement pstm = con.prepareStatement(selectSQL);
      ResulSet resultado = pstm.executeQuery();
      while(resultado.next()) {
       //Obtenemos valores de la base
     }
  } catch(SQLException e) {
   System.out,println(e.getCause());
 } finally {
   if(con != null) {
  try {
    con.close();
  } catch(SQLExceptio e) {
  System.out,println(e.getCause());
}
//Asi para el preparestatemen o statement y Resulset
//Con esto no dejas funcionando la conexón, ni la ejecución
//de la sentencia y liberas recursos de la ram
}
[/code]
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