Hi,
um die Gemüter gleich zu beruhigen - ich habe kein Problem mit JDBC Zugriffen :wink: den Zugriff bekomme ich hin.
Da ich allerdings kaum Programmiererfahrung habe, weiß ich nicht, wie ich in einem Progrämmchen den Zugriff auf Datenbanken so modular wie möglich gestalte. Sprich, dass es meinem Programm als solches egal ist ob ich auf eine Access, MySQL oder PostgressQL Datenbank zugreife.
Mein bisheriges Werk habe ich zur Erläuterung mal angehängt ...
Würde jetzt gerne mal wissen wie Ihr das angestellt hättet. Mir bleibt es ja grundsätzlich selbst überlassen ob ich bspw. eine getDaten() in der gleichen Klasse beherberge, doch im Hinblick auf die Modularität wäre es doch sinnvoller die ganzen getterMethoden (falls es jetzt mehrere davon gäbe) in eine andere Klasse zu verschieben? Vielleicht sogar die DBConnect als abstrakt definieren und die extra Klasse als Unterklasse der abstrakten DBConnect definieren?
Oder gar einen ganzen anderen Ansatz, dass man die getterMethoden direkt in die Klassen einfügt, aus denen sie benötigt werden???
Also Ihr seht schon - kann mich unter tausenden von Variatonen nicht entscheiden. Vielleicht könnt Ihr mir auf die Sprünge helfen und mir verraten was in der Praxis häufig Anwendung findet.
Grüße
Allievo
um die Gemüter gleich zu beruhigen - ich habe kein Problem mit JDBC Zugriffen :wink: den Zugriff bekomme ich hin.
Da ich allerdings kaum Programmiererfahrung habe, weiß ich nicht, wie ich in einem Progrämmchen den Zugriff auf Datenbanken so modular wie möglich gestalte. Sprich, dass es meinem Programm als solches egal ist ob ich auf eine Access, MySQL oder PostgressQL Datenbank zugreife.
Mein bisheriges Werk habe ich zur Erläuterung mal angehängt ...
Code:
public class Hauptklasse {
public static void main(String[] args) {
DBConnect db = new DBConnect("ODBCName","user", "password");
db.setSQL("SELECT * FROM tabelle1;");
db.getDaten();
db.closeAll();
}
}
Code:
import java.sql.*;
public class DBConnect {
private final String url = "jdbc:odbc:";
private String dbname;
private final String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
private String user;
private String pwd;
private String sql;
private Connection con;
private Statement stmt;
private ResultSet result;
public DBConnect() {
}
public DBConnect(String dbname, String user, String pwd) {
try {
Class.forName(driver);
con = DriverManager.getConnection(url+dbname,user,pwd);
System.out.println("Verbinde mit " + dbname + " ...");
}
catch(SQLException e) {
System.out.println("Fehler beim Verbindungsaufbau!");
System.exit(0);
}
catch (ClassNotFoundException e) {
System.out.println("JDBC over ODBC Treiber nicht gefunden!");
System.exit(0);
}
System.out.println("Verbindungsaufbau erfolgreich\n");
}
public void setSQL(String sql) {
this.sql = sql;
}
public String getDaten() {
try {
stmt = con.createStatement();
result = stmt.executeQuery(sql);
while (result.next()) {
...
...
...
}
}
catch(SQLException e) {
System.out.println("Fehler bei der Ausgabe!" + e);
System.exit(0);
}
return "";
}
public void closeAll() {
try {
result.close();
stmt.close();
con.close();
System.out.println("\n\nResultSet und Statement wurden erfolgreich geschlossen!");
}
catch(SQLException e) {
System.out.println("Fehler im close()-Argument!" + e);
System.exit(0);
}
}
}
Würde jetzt gerne mal wissen wie Ihr das angestellt hättet. Mir bleibt es ja grundsätzlich selbst überlassen ob ich bspw. eine getDaten() in der gleichen Klasse beherberge, doch im Hinblick auf die Modularität wäre es doch sinnvoller die ganzen getterMethoden (falls es jetzt mehrere davon gäbe) in eine andere Klasse zu verschieben? Vielleicht sogar die DBConnect als abstrakt definieren und die extra Klasse als Unterklasse der abstrakten DBConnect definieren?
Oder gar einen ganzen anderen Ansatz, dass man die getterMethoden direkt in die Klassen einfügt, aus denen sie benötigt werden???
Also Ihr seht schon - kann mich unter tausenden von Variatonen nicht entscheiden. Vielleicht könnt Ihr mir auf die Sprünge helfen und mir verraten was in der Praxis häufig Anwendung findet.
Grüße
Allievo