Hi folks
Ich befrage eine eingebettete H2 - Datenbank nach allen Datensätzen in einer Tabelle
und lasse diese in einem DefaultTableModel ausgeben.
Hierzu rufe ich im Konstruktor auf:
Der Quelltext von diesem Aufruf folgt weiter unten.
Nun erscheinen alle Datensätze in der dafür vorbereiteten Tabelle.
Wenn man nun auf eine Tabellenzeile klickt, dann erscheint der komplette Datensatz aufgesplittet in den dazugeörenden txtFields, basierend auf einer ID.
Hier kann man dann diesen Datensatz editieren und wiederum in der DB abspeichern.
Das alles funktioniert einwandfrei - nun zum Problem:
Nach dem try-catch - Block lösche ich die Spalten und Zeilen der Tabelle:
Das Löschen funktioniert ja, nur wird die Tabelle durch showDb(); nicht mit den gerade abgefragten Daten befüllt.
Zur Kontrolle lasse ich diese Datensätze mit Erfolg auf der Konsole anzeigen.
Nun showDb();
Ich denke, dass ich nicht mal einen großen Wurm im Code habe - hoffe ich mal
Trotzdem komme ich nicht weiter, weshalb ich mich um Eure Hilfe bemühen will.
Werft doch mal bitte einen Blick darauf, ich hoffe, dass Ihr mir helfen könnt.
Danke im Voraus schonmal fürs lesen
Damit ich mich besser verständlich machen kann, habe ich einen Screenshot beigefügt.
Ich befrage eine eingebettete H2 - Datenbank nach allen Datensätzen in einer Tabelle
und lasse diese in einem DefaultTableModel ausgeben.
Hierzu rufe ich im Konstruktor auf:
Java:
showDb();
Nun erscheinen alle Datensätze in der dafür vorbereiteten Tabelle.
Wenn man nun auf eine Tabellenzeile klickt, dann erscheint der komplette Datensatz aufgesplittet in den dazugeörenden txtFields, basierend auf einer ID.
Hier kann man dann diesen Datensatz editieren und wiederum in der DB abspeichern.
Das alles funktioniert einwandfrei - nun zum Problem:
Nach dem try-catch - Block lösche ich die Spalten und Zeilen der Tabelle:
Java:
btnEintragAendern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Statement stmt = DBData.connection.createStatement();
String updateDBTable;
String where;
updateDBTable = "UPDATE KOMMISSIONEN SET ";
where = " WHERE ID = " + txtFldId.getText();
stmt.executeUpdate(updateDBTable + "kommnr = '"
+ txtFldKommNr.getText() + "'" + ", "
+ "kommname = '" + txtFldKommName.getText() + "'"
+ ", " + "strasse = '" + txtFldStrasse.getText()
+ "'" + ", " + "hausnr = '"
+ txtFldHausNr.getText() + "'" + ", " + "plz = '"
+ txtFldPlz.getText() + "'" + ", " + "gemeinde = '"
+ txtFldGemeinde.getText() + "'" + ", "
+ "telnr = '" + txtFldTelNr.getText() + "'" + ", "
+ "bemerkung1 = '" + txtFldBem1.getText() + "'"
+ ", " + "bemerkung2 = '" + txtFldBem2.getText()
+ "'" + where);
JOptionPane.showMessageDialog(null,
"btnEintragAendern/showDb() - Eintrag gespeichert");
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, e1);
}
// Jetzt werden alle zeilen in der table geloescht
((DefaultTableModel)table.getModel()).setRowCount(0);
((DefaultTableModel)table.getModel()).setColumnCount(0);
// Nun sollte die geaenderte Tabelle "Kommissionen" die urspruengliche
// durch "showDb(); ersetzt werden
try{
showDb();
JOptionPane.showMessageDialog(null, "ist jetzt neu geladen");
}catch(Exception nixGeladen){
nixGeladen.printStackTrace();
}
}
});
Das Löschen funktioniert ja, nur wird die Tabelle durch showDb(); nicht mit den gerade abgefragten Daten befüllt.
Zur Kontrolle lasse ich diese Datensätze mit Erfolg auf der Konsole anzeigen.
Nun showDb();
Java:
public void showDb() {
// DB - Tabelle Kommissionen Tabellenbezeichnung und Daten auslesen
Vector<String> columnNames = new Vector<String>();
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
new Vector<Object>();
try {
String sql = "SELECT * FROM KOMMISSIONEN";
Statement stmt = DBData.connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int i = 1; i <= columns; i++) {
columnNames.addElement(rsmd.getColumnName(i));
}
while (rs.next()) {
Vector<Object> row = new Vector<Object>(columns);
for (int i = 1; i <= columns; i++) {
// row.addElement(rs.getObject(i)); // Original
row.addElement(rs.getString("ID"));
row.addElement(rs.getString("DATUM"));
row.addElement(rs.getString("KOMMNR"));
row.addElement(rs.getString("KOMMNAME"));
row.addElement(rs.getString("STRASSE"));
row.addElement(rs.getString("HAUSNR"));
row.addElement(rs.getString("PLZ"));
row.addElement(rs.getString("GEMEINDE"));
row.addElement(rs.getString("TELNR"));
row.addElement(rs.getString("BEMERKUNG1"));
row.addElement(rs.getString("BEMERKUNG2"));
}
data.addElement(row);
}
rs.close();
stmt.close();
} catch (Exception e) {
System.out.println(e);
}
// ----------------------------------------------------------------------
// Auf der Konsole zur Kontrolle
System.out.println("Methode: showDb - " + data + "\n");
// ----------------------------------------------------------------------
// DB - Ergebnisse in DefaultTableModel fuellen
tabModel = new DefaultTableModel(data, columnNames);
table = new JTable(tabModel);
JScrollPane scrollPane = new JScrollPane(table);
...
Trotzdem komme ich nicht weiter, weshalb ich mich um Eure Hilfe bemühen will.
Werft doch mal bitte einen Blick darauf, ich hoffe, dass Ihr mir helfen könnt.
Danke im Voraus schonmal fürs lesen
Damit ich mich besser verständlich machen kann, habe ich einen Screenshot beigefügt.