Um in einer Java Anwendung Ergebnisse aus einer SQL Abfrage darzustellen, steht die Komponente JTable zur Verfügung.
JTable ist eine Komponente die eine Tabelle anzeigt , die, ähnlich einer Excel Tabelle, aus Spalten, Spaltenköpfe und Zeilen besteht. Die Spaltenköpfe zeigen die Namen der Spalte an und sind frei wählbar. Die Zeilen zeigen die Datensätze an und zwar Zeile für Zeile ein Datensatz.
Um nun die Tabelle mit Inhalten , z.B. aus einer SQL Abfrage wie “select * from Adresse” zu füllen sind folgende Schritte notwendig.
Zunächst erstellen einer SQL Datenbank (MySQL, Postgresql, SQLite,…), Beispielhaft nehme ich hier eine SQLite Datenbank.
Im Java Source Code sollte es eine Klasse geben die die Verbindung mit der Datenbanl herstellt, hie heißt die Klasse “meineSQLite”.
Erstellen eines Objekts der Klasse meineSQLite:
string_1=”TestSQL.s3db”;
Der Name der Datenbank ist TestSQL.s3db.
meineSQLite query = new meineSQLite(string_1);
Die Datenbank auslesen und in einem ResultSet speichern:
ResultSet rs = query.doQuery(”select * from Adresse”);
Hier ist die SQL Abfrage , wobei Adresse eine Tabelle in der Datenbank TestSQL.s3db ist.
String[] tableColumnsName = {”id”,”name”,”position”,”vorname”,”nachname”,”telefon”,”adresse”};
Hier werden die Namen Spaltenköpfe festgelegt.
In Java kann man die Ergebnisse nicht direkt in die Tabelle schreiben, man braucht zunächst ein Modell einer Tabelle in die die Daten eingelesen werden, das DefaultTableModel.
DefaultTableModel ist auch eine Komponente in Java. Also erstellen wir ein DefaultTableModel Objekt.
DefaultTableModel modell = new DefaultTableModel();
und setzen die Spaltennamen die wir oben festgelegt haben.
modell.setColumnIdentifiers(tableColumnsName);
setColumnIdentifiers ist eine Methode aus der Klasse DefaultTableModel.
Jetzt ist der wichtigste Teil an der Reihe, wir gehen das ResultSet durch und füllen das Modell.
java.sql.ResultSetMetaData rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
Solange Ergebnisse da sind
while (rs.next()) {
Object[] objects = new Object[colNo];
for (int i = 0; i < colNo; i++) {
objects[i] = rs.getObject(i + 1);
}
dem Modell den Datensatz zufügen
modell.addRow(objects);
}
Um die Tabelle in der Anwendung anzuzeigen brauchen wir eine schon existierende JTable. Hier soll Sie jTableAdressenAnzeigen heißen.
Nun müssen wir der Tabelle jTableAdressenAnzeigen das richtige Modell zuweisen.
jTableAdressenAnzeigen.setModel(modell);
Und nun zeigt die Tabelle die Ergebnisse der Abfrage an.