# ODBC-Connection closen



## Reality (19. Mrz 2004)

Hi,
ich will eine ODBC-Connenction closen, was so aussieht:

```
void btVerbindung_actionPerformed(ActionEvent e) {
  try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con= DriverManager.getConnection("jdbc:odbc:Fremdwoerter","","");
lbVerbindung.setText("Verbindung hergestellt");
}catch(Exception ex)
{
System.out.println("ex.getMessage()");
ex.printStackTrace();
}
finally{
con.close(); //Hier kommt die Fehlermeldung
}
  }
```

Folgende Fehlermeldung kommt:


> "HauptFenster.java": Fehler #: 360 : Nicht bekannte Exception java.sql.SQLException; muß abgefangen werden oder zum Auslösen deklariert werden in Zeile 77, Spalte 5



Woran kann das liegen?

Achja: java.sql.* und java.swl.SQLException habe ich importiert.

Liebe Grüße
Reality


----------



## lhein (19. Mrz 2004)

Es scheint so, als ob con.close() in einen try-catch block gehört.

Bemüh mal die API Doku, da sollte es stehen.

LR


----------



## lhein (19. Mrz 2004)

Hab selber die API Doku bemüht 



> close
> 
> public void close()
> throws SQLException
> ...



LR


----------



## Reality (19. Mrz 2004)

Danke, geht jetzt.
Nur wenn ich folgendes hinschreibe, kommt die Exception:

```
void jMenuItem1_mousePressed(MouseEvent e) {
  try{
  con.close();
  System.out.println("Geschlossen!");
  }catch(Exception f){
  System.out.println("Fehler beim Schließen");
  }
  System.exit(0);
  }
```

Mit finally ging´s. Nur bemerkte ich, dass es keinen Sinn macht, da finally aufjedenfall ausgeführt wird und ich will, dass die Connection nur geclosed wird, wenn das Programm geschlossen wird.

Liebe Grüße
Reality


----------



## Reality (19. Mrz 2004)

Achso, die Exception wird ausgelöst, wenn keine Verbindung aufgebaut ist!
Werd mal versuchen ne If-Anfrage einzubauen.

Liebe Grüße
Reality


----------



## Guest (20. Mrz 2004)

Überprüf im finally-block nur, ob die connection nicht null ist, dann schliesse sie. Auftretende exceptions abfangen und ignorieren. Sieht dann in etwa so aus:


```
...
}
finally {
  try {
    if(con != null) {
       con.close();
   }    
  }
  catch(Exception ignored) {
     // log die exception gegebenenfalls
  }
}
```

Ansonsten schlag ich Dir vor, anstatt System.out lieber einen Logger wie log4j zu verwenden. Die Ausgaben des Loggers kann man später deaktivieren, wogegen die System.out dann ggf. auskommentiert werden müssen. Zudem kann man mit dem Logger sehr viel selektiver loggen.


----------



## Reality (20. Mrz 2004)

Danke! 

Liebe Grüße
Reality


----------

