jTable mit Datenbankwerten befüllen

Lia

Bekanntes Mitglied
Hi ihr Lieben,

ich habe Datenbank mit einer Tabelle und möchte diese Tabelle in ein jTable in Java mit allen Spalten und Zeilen füllen. " String query =" SELECT * FROM lessons"; ".
Meinen jTable habe ich schon erstellt und es hat 5 Spalten. Ich habe dies versucht:

public Object getValueAt(int rowIndex, int columnIndex) throws SQLException {
ResultSet rs = statement.executeQuery(query);

try {
rs.absolute(rowIndex + 1);
switch (columnIndex) {
case 0:
return rs.getString(1);
case 1:
return rs.getString(2);
case 2:
return rs.getInt(3);
case 3:
return rs.getObject(4).toString();
case 4:
return rs.getObject(5).toString();
default:
return null;
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
..

Und dann die Funktion getValueAt() aufgerufen, aber das alles funktioniert leider nicht.
Danke an alle.
 

mihe7

Top Contributor
Da es nicht erkennbar ist, ob Du JTable überschreibst, vorsichtshalber der Hinweis: mach das nicht, implementiere ein TableModel.

Unabhängig davon stimmt die Signatur nicht: getValueAt wirft keine SQLException. (EDIT: mit "getValueAt" war natürlich JTable#getValueAt bzw. TableModel#getValueAt gemeint)

Außerdem ist es äußerst ungünstig, Datenbankabfragen einfach so in getValueAt zu packen: die Methode wird für jede Zelle aufgerufen.
 

Lia

Bekanntes Mitglied
@mihe7 vielen Dank für deine Antwort !! Aber das TableModel habe ich schon implementiert, ich habe diese schon erstellt mit dem

table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"Lessons. Nr", "Name", "Number", "Call"
}
));
scrollPane.setViewportView(table);

oder wie genau meinst du das ? Ich habe nämlich mkit dem window builder die Tabelle "gebaut".
vielen dank
 

Lia

Bekanntes Mitglied
in dem Button Click. Ich möchte alle Datensätze in dem jTable anzeigen nachdem der Benutzer auf "anzeigen" geklickt hat
 

mihe7

Top Contributor
Verstehe. Du rufst auf Klick Daten aus der DB ab und willst die JTable damit füllen. Das kann man machen, wenn die Tabelle relativ klein ist.

Da Du ein DefaultTableModel verwendest, sollte es in etwa so funktionieren (Pseudo-Code):

Java:
Vector rowData() throws SQLException {
    try(ResultSet rs = statement.executeQuery(query)) {
        Vector data = new Vector();
        while (rs.next()) {
            Vector row = new Vector();
            row.add(rs.getString(1));
            row.add(rs.getString(2));
            row.add(rs.getInt(3));
            ...
            data.add(row);
        }
        return data;
    }
}
Vector columnData() {
    return new Vector(Arrays.asList("Lessons. Nr", "Name", "Number", "Call"));
}

void reload() {
    DefaultTableModel model = (DefaultTableModel) jTable.getModel();
    model.setDataVector(rowData(), columnData());
}
 

Lia

Bekanntes Mitglied
vielen Dank!!

was wäre wenn es doch mhrere Datensätze gibt? oder was meinst du mit wenn die Tabelle klein ist :)?
 

mihe7

Top Contributor
Naja, mit der Methode lädst Du alle Datensätze in den Speicher - egal, ob sie angezeigt werden oder nicht. JTable zeigt in der Regel also nur einen Ausschnitt der Daten an. JTable weiß, welche Zeilen und Spalten gerade angezeigt werden müssen und fragt das TableModel via getValueAt(row, col) genau danach. Dein getValueAt() entspricht genau diesem Ansatz, wenn Du es in eine von AbstractTableModel abgleitete Klasse steckst. Das Hauptproblem dabei ist, dass Du die Abfrage jedesmal durchführst, wenn JTable nach einem Wert einer Zelle fragt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
H Tabellenspalte in JTable in der falschen Reihenfolge Datenbankprogrammierung 10
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
A SQLite jTable binding mit Netbeans Datenbankprogrammierung 11
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
S MySQL jPMdbc&MySQL = Fehlerhafte Umlaute in JTable Datenbankprogrammierung 0
R HSQLDB Tabelle in JTable übertragen Datenbankprogrammierung 3
P MySql daten in leeren jtable übertragen Datenbankprogrammierung 5
D von Datenbank in JTable füllen Datenbankprogrammierung 16
D JTable stellt DB da Datenbankprogrammierung 24
A Ausgewählten Jtable Eintrag aus Db löschen Datenbankprogrammierung 9
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Rudolf MySQL MySQL Tabelle mit Fremdschlüsseln in JTable darstellen Datenbankprogrammierung 5
E csv datei in JTable einlesen Datenbankprogrammierung 3
D ArrayIndexOutOfBoundsException bei Update von JTable und Model Datenbankprogrammierung 13
E JTable mit Datenbankinhalt befüllen Datenbankprogrammierung 4
N MySQL MYSQL Inhalt an JTable übergeben. Datenbankprogrammierung 11
0 ResultSet in JTable Datenbankprogrammierung 14
M MySQL Table in Jtable integrieren Datenbankprogrammierung 26
B MySQL Row und ColumnIndex aus einer JTable (mysqlDb) selectieren Datenbankprogrammierung 18
M JTable änderung sofort auch in MySQL ändern. Datenbankprogrammierung 7
X Daten einer DatenbankTabelle in JTable darstellen Datenbankprogrammierung 13
M SQL Abfrage in jTable einfügen Datenbankprogrammierung 8
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
K JTable mit JDBC verbinden Datenbankprogrammierung 5
D PostgreSQL Von JTable -> Datenbank Datenbankprogrammierung 6
T Recordsets in eine JTable einlesen mit Netbeans 6.0 Datenbankprogrammierung 2
P JTable mit Daten aus MySQL befüllen mit Filterung Datenbankprogrammierung 3
N ID des Datensatzes aus JTable holen (nicht Index!) Datenbankprogrammierung 4
J Von Datenbank --> Vector --> JTable Problem Datenbankprogrammierung 6
J Klasse für Datensatzblättern in Verbindung mit JTable gesuch Datenbankprogrammierung 6
J jTable aktualisieren! Datenbankprogrammierung 2
V DB-Inhalt in JTable Datenbankprogrammierung 5
D Daten von Datenbank in JTable füllen... Datenbankprogrammierung 3
G JTable befüllen Datenbankprogrammierung 5
OnDemand Column char type, wie befüllen? Datenbankprogrammierung 2
S MySQL Befüllen von mehreren Spalten Datenbankprogrammierung 1
N String Array in While Schleife befüllen Datenbankprogrammierung 2
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
GianaSisters MySQL INT Datenbankfeld gar nicht befüllen ?! Datenbankprogrammierung 2
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6
C MySQL Datenbank mit Hibernate befüllen Datenbankprogrammierung 5
M Tabellen gleichzeitig befüllen? Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben