Hallo,
ich habe mal gelernt, ich solle meinen Code überdenken, wenn ich merke das ich den selben Code mehrmals schreibe.
Daher kommen mir bei meinem aktuellem Design doch so einige Zweifel:
Zum Problem: Ich soll eine Oberfläche für eine Datenbank schreiben, die den Werkbestand uns sie zugehörigen Fotos in unserem Museum erfasst. Da ich hier poste arbeite ich ja ganz offensichtlich mit Java und stelle die Verbindung zur PostgreSQL-Datenbank per JDBC her.
Ich habe also begonnen, die einzelenen Ansichten mit Logik zu füllen, dabei merke ich, dass ich immer wieder die Datenbankverbindung initialisiere und abfragen ausführe. Dazu ist aber fast immer der selbe Code notwendig (zumindest bis zu dem Punkt, an dem ich die Abfrageergebnisse auf Objekte ummünze)
Kann man diesen Code nicht irgendwie in eine Klasse auslagern, die die eine Verbindung hält, und darüber immer wieder neue Abfragen auwsführt, vielleicht sogar mit einem FIFO-Zwischenspeicher, der einen Forschrittsbalken oder irgendeine andere Rückmeldung an den Benutzer gibt?
Anscheinend habe ich hier vom Programmdesign bzw. von der Objektorien her ein Denkproblem.
MfG
Carsten
Ach, bevor ich's vergesse und wer meckert, hier noch kurz ein Beispiel für den Teil der sich wiederholt:
(Es sind zwar meißtens SELECT-Abfragen und keine Updates, ich hatte aber gerade diesen Teil (Stichwortzuweisung) geöffnet)
ich habe mal gelernt, ich solle meinen Code überdenken, wenn ich merke das ich den selben Code mehrmals schreibe.
Daher kommen mir bei meinem aktuellem Design doch so einige Zweifel:
Zum Problem: Ich soll eine Oberfläche für eine Datenbank schreiben, die den Werkbestand uns sie zugehörigen Fotos in unserem Museum erfasst. Da ich hier poste arbeite ich ja ganz offensichtlich mit Java und stelle die Verbindung zur PostgreSQL-Datenbank per JDBC her.
Ich habe also begonnen, die einzelenen Ansichten mit Logik zu füllen, dabei merke ich, dass ich immer wieder die Datenbankverbindung initialisiere und abfragen ausführe. Dazu ist aber fast immer der selbe Code notwendig (zumindest bis zu dem Punkt, an dem ich die Abfrageergebnisse auf Objekte ummünze)
Kann man diesen Code nicht irgendwie in eine Klasse auslagern, die die eine Verbindung hält, und darüber immer wieder neue Abfragen auwsführt, vielleicht sogar mit einem FIFO-Zwischenspeicher, der einen Forschrittsbalken oder irgendeine andere Rückmeldung an den Benutzer gibt?
Anscheinend habe ich hier vom Programmdesign bzw. von der Objektorien her ein Denkproblem.
MfG
Carsten
Ach, bevor ich's vergesse und wer meckert, hier noch kurz ein Beispiel für den Teil der sich wiederholt:
(Es sind zwar meißtens SELECT-Abfragen und keine Updates, ich hatte aber gerade diesen Teil (Stichwortzuweisung) geöffnet)
Code:
try {
Class.forName(DB_DRV);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(this.getRootPane(),
"Konnte Datenbanktreiber nicht finden!!",
"Datenbank-Fehler",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
return;
}
try {
Connection c = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
Statement s = c.createStatement();
try {
s.executeUpdate("INSERT INTO \"BDB-1.0\".stichwort(wort) VALUES ('"+stwName+"')");
} catch (org.postgresql.util.PSQLException e) {
JOptionPane.showMessageDialog(this.getRootPane(),
e.getLocalizedMessage(),
"Datenbank-Fehler",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
s.executeUpdate("INSERT INTO " +
"\"BDB-1.0\".verschlagwortung(werk_id, stichw_id) " +
"SELECT " +
"werk_id, stichw_id " +
"FROM " +
"\"BDB-1.0\".werk, " +
"\"BDB-1.0\".stichwort " +
"WHERE " +
"werk_id="+ werk_id +
" AND " +
"wort='" + stwName + "'");
} catch (SQLException e) {
JOptionPane.showMessageDialog(this.getRootPane(),
e.getLocalizedMessage(),
"Datenbank-Fehler",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
return;
}