Auffüllen jTable mit Daten in der Datenbank
Ich versuche das Auffüllen des Netbeans GUI-builder jTable mit meinen Derby-Datenbank Daten.
Ich bin mit dem folgenden code, in meinem Account.java Klasse:
public DefaultTableModel getData() {
try {
String stmt = "SELECT * FROM APP.DATAVAULT";
PreparedStatement ps = Main.getPreparedStatement(stmt);
ResultSet rs = ps.executeQuery();
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
Vector columns = new Vector(columnCount);
//store column names
for (int i = 1; i <= columnCount; i++) {
columns.add(md.getColumnName(i));
}
Vector data = new Vector();
Vector row;
while (rs.next()) {
row = new Vector(columnCount);
for (int i = 1; i <= columnCount; i++) {
row.add(rs.getString(i));
}
data.add(row);
//Debugging
}
//List.setModel(tableModel);
ps.close();
rs.close();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
DefaultTableModel tableModel = new DefaultTableModel(data, columns);
return tableModel;
}
Ideal, ich möchte in der Lage sein, um zurückzukehren das tableModel mit den Parametern, die Daten und Säulen im inneren, so wie ich das verstehe tun Sie diese Methode in meiner GUI ist eine schlechte Praxis. Alle tutorials online nicht zeigen, wie das senden der Daten über eine andere Klasse, Sie machen einfach nur die Datenbank-code in der GUI-Klassen.
Ich habe einen Fehler, wo Sie nicht sehen, die Daten und Spalten, weil Sie deklariert sind und in einem unerreichbaren Teil meiner Methode. Nachdem ich dies getan haben, muss ich einen Weg finden, um diese über meine GUI-Klasse und die Einstellung des Modells für meine jTable in der Netbeans GUI-builder.
Habe ich die Suche dieser website für Antworten, und ich habe versucht, viele Lösungen. Aber ich habe nie scheinen, um etwas zu arbeiten, aufgrund der Art, wie ich Sie programmiert haben, mein system. Ich habe auch versucht, andere websites wie:
http://tips4java.wordpress.com/2009/03/12/table-from-database/
http://chang.advits.com/populate-data-from-database-into-jtable-in-netbeans < das wäre optimal gewesen, aber es hat nicht funktioniert. Ich folgte ihm zu einem tee!
und habe mir die Javadocs für die jTable, DefaultTableModel und ResultSetTableModel - ich habe keineswegs nicht versucht, es selbst zu tun, indem Sie lernen usw...
Wie kann ich über das tun dies mit der Art und Weise habe ich modelliert das system? Auch, sowieso die Festlegung der meine Methode, oder muss ich es verschrotten insgesamt?
InformationsquelleAutor John Vasiliou | 2013-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also müssen Sie in irgendeiner Weise zu "erzählen" die Tabelle, dass das Modell geladen wurde. Man könnte ein Zuhörer call-back-Mechanismus, aber es könnte einfacher sein zu verwenden
SwingWorker
statt.Dies ermöglicht es Ihnen, einen Anruf zu tätigen, um die Datenbank in einen hintergrund-thread, und wenn es fertig ist, aktualisieren Sie die Benutzeroberfläche innerhalb des EDT.
Du bist Beispiel wird nicht funktionieren.
Den
Vector
scolumns
unddata
deklariert sind, im Rahmen dertry-catch
, was bedeutet, dass Sie nicht sichtbar für den Rest der Methode, soDefaultTableModel tableModel = new DefaultTableModel(data, columns);
nicht kompiliert.Sollten Sie, zumindest, verwirft der stack-trace von Ausnahmen, wird es Ihnen helfen, wo der eigentlich Fehler ist, so dass anstelle von
System.out.println(e.getMessage());
verwenden, sollten Siee.printStackTrace();
. Eine bessere Lösung ist die Verwendung derLogger
entweder aus dem JDK oder ein Dritter logger wielog4j
.Sind Sie auch Ressourcen, die, wenn Sie geöffnet ist, sollten Sie es schließen. Während Sie das tun, rufen Sie
ps.close()
undrs.close()
, wenn, aus welchem Grund auch immer, eine Ausnahme Auftritt, wird Sie nicht aufgerufen werden, verlassen zu Ressourcen öffnen.Fügen Sie diese in die
finally
block destry-catch
um sicherzustellen, dass Sie geschlossen sind und machen alle Anstrengungen, um Sie zu schließen.OK, ich habe nicht den code als solchen, sondern bits, bar die schließlich. Ich bin mir nicht sicher, ob ich markieren Sie es als richtig, da mein Programm immer noch nicht funktioniert, aber das hat mir geholfen. Ist das genug, um Sie zu markieren, richtig?
Und was funktioniert nicht daran?
Ich habe eine neue Frage und implementiert einige der code oben! Bitte sehen - stackoverflow.com/questions/15144715/...
InformationsquelleAutor MadProgrammer