Hi Community,
ich arbeite gerade an einem Programm dass in naher Zukunft eine Bücherverwaltung darstellen soll. Damit ihr eine grobe Vorstellung habt wie das aussehen soll: Screenshot
Zu dem Ganzen hab ich ein paar Fragen im Bezug auf MVC und die Datenbankkommunikation aber erst mal möchte ich etwas mehr auf die Funktionsweise eingehen.
Die Daten (also Buchinformationen) sollen in einer H2 Embedded DB gespeichert werden. Das geht auch schon alles wie ihr seht, ich kann die DB auslesen - mehr aber momentan noch nicht. Die Daten sollen also ausgelesen werden und in einer JTable und in dem "Book Details"-Panel dargestellt werden.
Ich finde die Idee ganz nett dass ich dem Model meiner JTable ein ResultSet gebe und dadurch die Buchdaten darstelle. Das habe ich dann auch so ähnlich gemacht - mit Hilfe folgender Klasse:
In dem Panel der JTable rufe ich dann folgendes auf (Wobei mir die getBooks Methode eben ein ResultSet liefert):
Jetzt stellt sich mir die Frage wie ich bei einer Änderung der Buchdaten (soll nur in dem Book-Details-Panel gehen, die Tabelle ist nur für die Darstellung) die Änderungen in die DB schreibe und wie ich dann wieder die Tabelle aktualisiere. Versteht mich bitte nicht falsch, ich weiß im allgemeinen wie ich die Daten in die DB schreiben kann aber wie baue ich mir eine schöne MVC Struktur damit das alles wirklich Sinn ergibt und reibungslos funktioniert? Da habe ich gerade keine Vorstellung
Die JTable ist in einem JPanel, genau so wie die Book-Details und das sollten eigentlich meine Views sein und die DB eigentlich mein Model aber was ist dann eigentlich mein JTable Model? Und wie bekomme ich das Zusammenspiel so hin dass bei einer Änderung alle schön benachrichtigt werden?
Grüße und danke im Voraus,
DS
ich arbeite gerade an einem Programm dass in naher Zukunft eine Bücherverwaltung darstellen soll. Damit ihr eine grobe Vorstellung habt wie das aussehen soll: Screenshot
Zu dem Ganzen hab ich ein paar Fragen im Bezug auf MVC und die Datenbankkommunikation aber erst mal möchte ich etwas mehr auf die Funktionsweise eingehen.
Die Daten (also Buchinformationen) sollen in einer H2 Embedded DB gespeichert werden. Das geht auch schon alles wie ihr seht, ich kann die DB auslesen - mehr aber momentan noch nicht. Die Daten sollen also ausgelesen werden und in einer JTable und in dem "Book Details"-Panel dargestellt werden.
Ich finde die Idee ganz nett dass ich dem Model meiner JTable ein ResultSet gebe und dadurch die Buchdaten darstelle. Das habe ich dann auch so ähnlich gemacht - mit Hilfe folgender Klasse:
Java:
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class DBUtils {
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector columnNames = new Vector();
// Get the column names
for (int column = 0; column < numberOfColumns; column++) {
columnNames.addElement(metaData.getColumnLabel(column + 1));
}
// Get all rows
Vector rows = new Vector();
while (rs.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
In dem Panel der JTable rufe ich dann folgendes auf (Wobei mir die getBooks Methode eben ein ResultSet liefert):
Code:
TableModel model = DBUtils.resultSetToTableModel(DB.getBooks());
table = new JTable(model);
Jetzt stellt sich mir die Frage wie ich bei einer Änderung der Buchdaten (soll nur in dem Book-Details-Panel gehen, die Tabelle ist nur für die Darstellung) die Änderungen in die DB schreibe und wie ich dann wieder die Tabelle aktualisiere. Versteht mich bitte nicht falsch, ich weiß im allgemeinen wie ich die Daten in die DB schreiben kann aber wie baue ich mir eine schöne MVC Struktur damit das alles wirklich Sinn ergibt und reibungslos funktioniert? Da habe ich gerade keine Vorstellung
Die JTable ist in einem JPanel, genau so wie die Book-Details und das sollten eigentlich meine Views sein und die DB eigentlich mein Model aber was ist dann eigentlich mein JTable Model? Und wie bekomme ich das Zusammenspiel so hin dass bei einer Änderung alle schön benachrichtigt werden?
Grüße und danke im Voraus,
DS
Anhänge
Zuletzt bearbeitet: