HSQLDB Tabelle in JTable übertragen

Rhymen

Mitglied
Hallo Leute

Versuche momentan verzweifelt aus meiner Tabelle Daten in einen JTable zu übertragen.
Problem ist der SQL Syntax und dann die Weiterverarbeitung durch den Java-SQL-Treiber. Ich möchte gerne aus meiner Tabelle (26 Columns) lediglich 3 Columns (kontaktnr, vorname, nachname) in meinen JTable übertragen.

Zugeben muss ich jedoch das ResultSet auch noch nicht so ganz verstanden habe.
Wieso "while(rs.next())"? Die while-Schleife wurde bei mir bis jetzt immer nur 1 mal ausgeführt und ich musste zusätzlich dann in der Schleife weitere Schleifen verwenden. Ein Beispiel:

Java:
    public String[] loadKunde(String searchField, String userInput) {

        String[] string = new String[26];

        try {
            con = DriverManager.getConnection("jdbc:hsqldb:" + currentDBPath + ";ifexists=true", "sa", "");
            stmt = con.createStatement();

            rs = stmt.executeQuery("select * from " + currentTableName + " where " + searchField + " = '" + userInput + "';");

            while (rs.next()) {
                for (int i = 0; i < string.length; i++) {
                    string[i] = rs.getString(i + 1);
                }
            }

        } catch (SQLException ex) {
            Logger.getLogger(Model.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            exit();
            return string;
        }
    }

Das klappt soweit wunderbar, aber wofür das "while(rs.next())"? Habe mich lediglich an Tutorials gehalten da ich vorher noch nie mit der Java-SQL-Schnittstelle gearbeitet habe.

Daher hab ich auch keine Ahnung wie ich die Daten im ResultSet (falls ich sie denn jetzt auslese) in ein Object[][] bekomme. Desweiteren frage ich mich wie ich das Object[][] anlegen soll wenn ich nicht weiß wie viele Einträge die Tabelle hat.

Versucht habe ich bereits folgendens:
Java:
Object[][] data = new Object[rs.getRow()][3];
Jedoch kamen bei getRow merkwürdige Werte raus (was aber natürlich auch an der Datenbank liegen kann da diese momentan viel zu Testzwecken missbraucht wird, falls das der richtige Weg war bitte kurze Rückmeldung).
Der SQL-Befehl den ich verwendet habe lautet
Java:
rs = stmt.executeQuery("SELECT kontaktnr, vorname, nachname FROM testtable;");
Jedoch weiß ich von jetzt an nicht weiter. Arbeite man nun mit ResultSetMetaData?

Mfg Rhymen
 

Olli_M

Mitglied
Also vor einiger Zeit hab ich auch mal was mit HSQLDB gemacht, hat ganz gut geklappt.
In den Grundzügen hab ich es etwa so gemacht: eine Klasse von AbstractTableModel abgeleitet,
und die Methoden getColumnCount(), get ColumnName(), getRowCount() und
public Object getValueAt(int rowIndex, int columnIndex) implementiert.

In getRowCount hab ich die Länge des ResultSets zurückgeliefert. Dazu hab ich last() und getRow() benutzt (geht wohl auch anders).

In getValueAt hole ich die Objekte aus dem ResultSet (hier im Beispiel rs genannt) heraus.
In etwa so (weiß leider nicht mehr genau, warum die +1 nötig war; ich glaube, ich habe noch vorne eine Spalte gemacht, die ich selber durchnumeriere, und die nicht aus der DB kommt):

Java:
 public Object getValueAt(int rowIndex, int columnIndex) {
         try {rs.absolute(rowIndex + 1);
               return rs.getObject(columnIndex + 1);
        } catch (SQLException e) { return null; }
   }

Und die JTable kriegt eben das abgeleitete Model und zeigt das dann an. Auf diese Weise hab ich auch kein Array gebraucht. Mit dem Array geht es bestimmt auch, man muss nur schauen, die Werte aus dem ResultSet da reinzukriegen.

viele Grüße

Olli
 

mla.rue

Bekanntes Mitglied
ResultSet speichert alle von deinem SELECT gelieferten Spalten, für alle Datensätze (Zeilen) deiner Tabelle, so wie die Ausgabe nunmal wäre, wenn du das Select nur in der DB ausführst. Das sieht dann in etwa so aus:


Code:
1) [Spalte..1][Spalte..2][Spalte..3][Spalte..n]
2) [Spalte..1][Spalte..2][Spalte..3][Spalte..n]
3) [Spalte..1][Spalte..2][Spalte..3][Spalte..n]
...
m) [Spalte..1][Spalte..2][Spalte..3][Spalte..n]

Das ResultSet hat eine Flag/einen Zeiger auf einem Datensatz, das würde man ausgeben, wenn mans ansprechen würde. Mit rs.next/previous/last/first etc kannst du durch das ResultSet navigieren und den Zeiger entsprechend auf einen anderen Datensatz legen.

Wenn gerade erstellt, ist der Zeiger auf der ersten Zeile: 1). Dann machst im Körper der while-Schleife irgendwas (z.B. den Inhalt der einzelnen Spalten an dein Tabellenobjekt übergeben) und gehst dann mit rs.next auf die nächste Zeile: 2).... bis irgendwann m erreicht ist, dann ist Ende.

Mit der for Schleife in der while gehst du alle Spalten durch. Du kannst es natürlich auch so angehen:

Java:
listTabelle.add(rs.getString(1));
listTabelle.add(rs.getString(3));
listTabelle.add(rs.getString(5));

Solltest dann aber evtl dein SELECT anschauen, wenn du nur 3 Spalten brauchst, dann nur nach 3 Spalten von vornherei fragen (SELECT *) sollte man eh nicht machen.

Mit dem Object[][] hast schon recht, du weisst nicht wie groß es ist, ich würde da empehlen mit z.B. einer ArrayList<ArrayList<String>> zu arbeiten, und das kannst dann in ein Object[][] umwandeln.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Rudolf MySQL MySQL Tabelle mit Fremdschlüsseln in JTable darstellen Datenbankprogrammierung 5
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
D Tabelle an Persistenzeinheit binden Datenbankprogrammierung 1
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
S gesamte Tabelle löschen Datenbankprogrammierung 2
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
Kirby.exe Eine Tabelle updaten Datenbankprogrammierung 16
L SQL Tabelle Datenbankprogrammierung 11
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
P Derby/JavaDB Datenbanktabelle erweitern, ohne Tabelle zu ändern Datenbankprogrammierung 6
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
S FilterSearch Tabelle Datenbankprogrammierung 4
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
Thallius MySQL Tabelle splitten aber wie eine abfragen? Datenbankprogrammierung 10
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
N Dynamische Tabelle Datenbankprogrammierung 84
T Zeitraum aus SQL-Tabelle Datenbankprogrammierung 3
V SQLite 2 Tabelle vergleichen und alle unterschiede rausgeben Datenbankprogrammierung 1
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
M MySQL wie Listen oder arras in Tabelle(n) schreiben Datenbankprogrammierung 10
Paul15 Tabelle vergleichen Datenbankprogrammierung 15
J Tabelle synchronisieren mit Datenbank Datenbankprogrammierung 7
E Wie kann man bestimmte Zeilen der Tabelle rot markieren? Datenbankprogrammierung 1
L Tabelle mit Inhalt füllen Datenbankprogrammierung 2
J Optimierung von Querys/ ausgegebene Tabelle mit in neue Anfrage einbinden Datenbankprogrammierung 2
M Derby/JavaDB Kleine DB mit Tabelle erweitern - Integrität - Alter-Table - Netbeans ... Datenbankprogrammierung 5
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
A MySQL Tabelle ID abfragen und Spalte ausgeben Datenbankprogrammierung 4
S Update Tabelle aus Textfeld Datenbankprogrammierung 2
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
B Nur 99% der Datensätze werden in Tabelle geschrieben Datenbankprogrammierung 2
Joew0815 Datenmerge große Tabelle Datenbankprogrammierung 16
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
P Neue Tabelle dazugekommen Datenbankprogrammierung 1
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
J Normalisierung - Aufspaltung der Tabelle Datenbankprogrammierung 4
V HSQLDB Insert in eine Tabelle mit Autoincrement Datenbankprogrammierung 2
S Wie muss meine SQL Tabelle aufgebaut sein, um unendliche Attribute zu vermeiden Datenbankprogrammierung 2
S MySQL Einfügen in Tabelle nur von Programm zulassen Datenbankprogrammierung 7
S Oracle Database 11g , eclipse , Tabelle erstellen Datenbankprogrammierung 2
L MySQL Uhrzeit-Format innerhalb einer Tabelle Datenbankprogrammierung 8
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
M Designfrage zu Rows die sich auf einen Datensatz derselben Tabelle beziehen Datenbankprogrammierung 7
N Temporäre tabelle MySQL Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
L SQLite Daten werden nicht in die Tabelle eingefügt Datenbankprogrammierung 7
D JPA (Hibernate) : Tabelle zweimal joinen Datenbankprogrammierung 4
G Oracle Hibernate M:N-Beziehung mit nur einer vorhandenen Tabelle Datenbankprogrammierung 5
N [XLS]Strings in Excel-Tabelle schreiben (poi) Datenbankprogrammierung 2
M DB View in Tabelle konvertieren in DB2? Datenbankprogrammierung 2
N Einzelne Spalte in MySQL-DB-Tabelle schreiben Datenbankprogrammierung 7
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
H MySQL Tabelle "Table" programmieren Datenbankprogrammierung 2
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
A Wie Tabelle auf bestimmten Inhalt überprüfen? Datenbankprogrammierung 7
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
Y Tabelle (elegant) importieren Datenbankprogrammierung 4
turmaline [Hibernate] @OneToMany - Eine referenzierte Tabelle abfragen Datenbankprogrammierung 11
T Update an SQL Tabelle ?! Datenbankprogrammierung 10
F Baumstruktur erstellen und Art Tabelle festhalten!? Datenbankprogrammierung 13
S JPA: Objekt in Tabelle mit Composite Keys mappen (Embeddable Annotation) Datenbankprogrammierung 2
A Tabelle aktuell halten Datenbankprogrammierung 5
trash SQL, ganze Tabelle abfragen Datenbankprogrammierung 3
F HSQLDB HSQLDB lässt mich nicht auf erstellte Tabelle zugreifen Datenbankprogrammierung 12
Airwolf89 Spaltennamen einer Tabelle zurückgeben lassen Datenbankprogrammierung 9
J Ausgewählte Datensätze in DB-Tabelle schreiben Datenbankprogrammierung 13
J zufällige Auswahl aus einer Tabelle Datenbankprogrammierung 4
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9
M Ausgabe in Tabelle der MySQL-Datenbank mit Java Datenbankprogrammierung 4
J Tabelle auslesen- knifflig Datenbankprogrammierung 7
Z [ORACLE] Ausgabe Tabelle im GUI Datenbankprogrammierung 4
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
R Tabelle Updaten aber auch Speichern Datenbankprogrammierung 2
D MySql Tabelle mit MySQLAdministrator (Anfänger) Datenbankprogrammierung 5
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
C Prüfen, ob eine MySQL-Tabelle bereits existiert Datenbankprogrammierung 7
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
G DB Modellierung mit variablen Attributen in der Tabelle Datenbankprogrammierung 4
S Datenbank-Tabelle in SWING/AWT ausgeben Datenbankprogrammierung 28
K Tabelle mit resultset refreshen? Datenbankprogrammierung 4
B Doppelte Zeilen einer Doppelten Spalte aus einer Tabelle entfernen. Datenbankprogrammierung 2
V Delete From Tabelle, ohne vorher die Tabelle zu kennen Datenbankprogrammierung 5
MQue größte id in einer Tabelle abfragen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben