einfache DB-Verbindungsklasse

Status
Nicht offen für weitere Antworten.
P

Petra30

Gast
Hallo,

ich schreibe gerade eine einfache DB-Verbindungsklasse. Leider bekomme ich immer diese Fehlermeldungen. Wenn ich einfach alle Funktionen in die main-Methode packe, funktioniert die Verbindung, aber durch die Methoden-Einteilung und die statischen Variablen geht garnichts mehr ?!

unreported exception java.sql.SQLException; must be caught or declared to be thrown
con.close();
unreported exception java.sql.SQLException; must be caught or declared to be thrown
myStatement.close();
unreported exception java.sql.SQLException; must be caught or declared to be thrown
myStatement = con.createStatement();
java.sql.SQLException; must be caught or declared to be thrown
ResultSet result = myStatement.executeQuery(mysql_query);

Code:
import java.sql.*;
import java.util.*;
import java.io.*;


public class DBConnection {
    
  static Statement myStatement = null;
  static Connection con = null;
    
  public DBConnection(){    

       try {
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            con = DriverManager.getConnection("jdbc:derby://localhost:1527/myDB");
       }
        catch (Exception e) {
            System.out.println("EXCEPTION: " + e.getMessage());
            e.printStackTrace();
        }
 }  
  

    public void disconnect(){     
        
        if(con!=null){
            con.close();         
        } 
        
        if(myStatement!=null){         
            myStatement.close();  
        }
    }
    
    
    //nimmt eine MySql anfrage entgeben, gibt ResultSet zurück
    
    public ResultSet getResultSet(String mysql_query){   
        
        myStatement = con.createStatement();
        ResultSet result = myStatement.executeQuery(mysql_query);                  
         
        return result;   
           
    }

}
[/quote]
 

Prismapanda

Aktives Mitglied
Wieso behebst du nicht erstmal die (von dir sogar) genannten Fehler im Code? Fange die Excecptions auf oder gib in der Signatur der Methoden an, dass sie geworfen werden können ...
btw: warum ist die Connection und das Statement static?
 
P

Petra30

Gast
Habe jetzt das abfangen der Fehler mit try und catch eingebaut. Der Code funktioniert nun einwandfrei *jippi*. Ich dachte try und catch wären immer optional, denn wenn kein Fehler erzeugt wird, muss ja auch keiner abgefangen werden.

Connection und Statement sind static, damit sie mit der Methode public void disconnect() geschlossen werden können. Wenn ich ich richtig verstanden habe, sind static Variablen Klassenvariablen, d.h. sie können innerhalb jeder Methode der Klasse geändert werden. Eine globale Variable für eine Klasse sozusagen. Oder habe ich das komplett missverstanden ? Bin leiderr noch Java-Anfänger :(
 

Prismapanda

Aktives Mitglied
Ja, das mit den statischen Variablen hast du leider ein wenig missverstanden. Variablen, die als static deklariert werden, sind sog. Klassenvariablen, d.h. dass diese für alle Klassen dieser Art gleich sind. Demnach gäbe es für alle DBConnection Instanzen nur eine Connection und nur ein Statement (eben klassenübergreifend). Es kann jedoch durchaus vorkommen, dass man mehrere DBConnections haben möchte, was mit statischen Variablen nicht geht. Deshalb als nicht-statische Instanzvariable deklarieren. Du kannst mit beiden Arten über die gesamte Klasse hinweg auf die Variablen zugreifen, also stellt das keine Beschränkung dar. Meiner Meinung nach sollten sie auch als private deklariert werden, damit der Gebrauch von diesen hinter der Klasse verborgen wird. SW: Information Hiding. Schließlich möchtest du ja möglichst von den ausführenden Details (wie etwa Connection und Statement) abstrahieren.
Hoffe das hilft erstmal ein wenig weiter, ansonsten gibt es ja genug Literatur und Tutorials zum Thema...
PP
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben