Avatar billede netnerd Nybegynder
14. juni 2005 - 12:36 Der er 9 kommentarer og
1 løsning

Lukke DB forbindelse når program lukkes

Hej...

Kan ikke helt finde ud af hvordan jeg for lukket database forbindelse når jeg lukker programmet (trykker "X").

Kan sagtens lave en metode som f.eks. siger con.close(); men hvordan får jeg denne kørt?

Mvh Jens
Avatar billede kalp Novice
14. juni 2005 - 12:57 #1
hvis det er gui..


    this.addWindowListener(new java.awt.event.WindowAdapter()
      {
        public void windowClosing(WindowEvent e)
        {
          this_windowClosing(e);
        }
      });

 

private void this_windowClosing(WindowEvent e)
  {
con.close();
  }
Avatar billede jakoba Nybegynder
14. juni 2005 - 13:55 #2
I enhver klasse kan du lave en metode 'finalize' den vil blive sktiveret når en instans af klassen garbage-collectes. så fx i din main klasse måske.

Men jeg troede faktisk DB connections blev lukket automatisk, ligesom filer.
Avatar billede simonvalter Praktikant
14. juni 2005 - 15:11 #3
Det er vigtigt at du lukker både resultset, statement og connection. Der er en interessant diskussion om emnet her.

http://www.javalobby.org/java/forums/t18930.html
Avatar billede arne_v Ekspert
14. juni 2005 - 15:18 #4
det er ikke sikkert at finalize bliver kaldt
Avatar billede arne_v Ekspert
14. juni 2005 - 15:20 #5
connections skal nok blive lukket

man bør altid lukke eksplicit selv

fordi connections er en begrænset ressource og ved luk selv så kan der gå
lang tid inden den connection bliver frigjordt
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:51 #6
I hvilke tilfælde kan det ske at finally koden ikke bliver kaldt .. ud over hvis der står system.exit(0); eller hvis vi har et uendeligt loop i vores try/catch ? Jeg mindes godt have have læse om det men kan ikke lige huske grunden.

Som jeg forstår hans pointe på javalobby så er der ingen ide at catche uden for finally da hvis der opstår en fejl så er det aligevel ikke muligt at recover fra den.
Avatar billede simonvalter Praktikant
14. juni 2005 - 16:56 #7
så finally vil heller ikke blive kaldt ved java.lang.error

An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. The ThreadDeath error, though a "normal" condition, is also a subclass of Error because most applications should not try to catch it.

og hvorfor så lukke uden for finally.. programmet er sansynligvis dødt på det tidspunkt.
Avatar billede arne_v Ekspert
14. juni 2005 - 22:14 #8
simon>

finally skal nok blive kaldt

jeg snakker om finalize, som meget nemt ikke kan blive kaldt
Avatar billede simonvalter Praktikant
14. juni 2005 - 22:17 #9
ok så er jeg med :)
Avatar billede netnerd Nybegynder
15. juni 2005 - 11:16 #10
Hej gutter...

tak for de hurtige svar, og dine fine kommentare :)

Mit problem er løst!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester