ODBC-Connection closen

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hi,
ich will eine ODBC-Connenction closen, was so aussieht:
Code:
  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

Top Contributor
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

Top Contributor
Hab selber die API Doku bemüht :)

close

public void close()
throws SQLException
Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released.

Calling the method close on a Connection object that is already closed is a no-op.

Note: A Connection object is automatically closed when it is garbage collected. Certain fatal errors also close a Connection object.

Throws:
SQLException - if a database access error occurs

LR
 

Reality

Top Contributor
Danke, geht jetzt.
Nur wenn ich folgendes hinschreibe, kommt die Exception:
Code:
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

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

Liebe Grüße
Reality
 
G

Guest

Gast
Ü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:

Code:
...
}
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.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben