DB Tabelle in JTable anzeigen - Probleme

dior

Bekanntes Mitglied
Hi,

ich versuche den Inhalt einer oracle Tabelle in einer JTable anzuzeigen.
Ich bekomme es hin das er mir den Inhalt grundsätzlich zeigt aber er macht mir für jede zeile in der DB eine eigene Tabelle.

Wie kann ich meine Code anpassen das ich das alles in einer einzigen JTable ausgebe?

Java:
package GUI;

import db_input.Db_select;
import java.sql.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
 
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;


/**
 *
 * @author ich :)
 */
public class JTable_Ausgabe {
    public static void main( String[] args ) throws Exception{
                
        Connection conn = getConnection();
        String tableName = "DMT_TESTTABLE1"; 
        String tabelle = tabelle(conn, tableName);
        
        
        
        try {
         
            Statement stmt = null;
            ResultSet rs = null;
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT * FROM " + tableName); //tableName);
            int count = 1;
                        
            while (rs.next() ) {
                String s1 = rs.getString(1);
                String s2 = rs.getString(1);
                String s3 = rs.getString(1);
                String s4 = rs.getString(1);
                String s5 = rs.getString(1);
                String s6 = rs.getString(1);
                s1 = rs.getString("VID");
                s2 = rs.getString("VALUE");
                s3 = rs.getString("FILTER");
                s4 = rs.getString("SHORTTEXT");
                s5 = rs.getString("UNUSED");
                s6 = rs.getString("ORDINAL");
                
                System.out.println("Zeile:    " + count);
                System.out.println(s1 + " | " + s2 + "\n");
                
               
            
        Vector data = new Vector();
            Vector rowA = new Vector();
             
                rowA.add(  s1 );
                rowA.add(  s2 );
                rowA.add(  s3 );
                rowA.add(  s4 );
                rowA.add(  s5 );
                rowA.add(  s6 );
//          
        
            data.add( rowA );

                
        // Die Titel für das Table
        Vector title = new Vector();
            title.add( "VID" );
            title.add( "VALUE" );
            title.add( "FILTER" );
            title.add( "SHORTTEXT" );
            title.add( "UNUSED" );
            title.add( "ORDINAL" );
        
        // Das JTable initialisieren
        JTable table = new JTable(  data, title );
        
        JFrame frame = new JFrame( "Demo" );
        frame.getContentPane().add( new JScrollPane( table ) );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.pack();
        frame.setVisible( true );
            
              
            } 

        }         catch (Exception e){}
            
    }   
            
    
    // ######################  DB Connection  ###############################################################
    
    public static Connection getConnection() throws Exception {
    String driver = "oracle.jdbc.driver.OracleDriver";

      String url = "jdbc:oracle:thin:@xxxxxxxxxxxx:1521:xxxxx"; // NISTEST1
      String username = "xxxxx";
      String password = "xxxxx";


        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url, username, password);
        
        return conn;
    }
    
    // #####################  Result  ########################################################
    String s1 = null;
    
    public static String tabelle(Connection conn, String tableName) throws SQLException {
        String resultTable = "";
        Statement stmt = null;
        ResultSet rs = null;
        try {
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT * FROM " + tableName); //tableName);
            
            while (rs.next() ) {
                String s1 = rs.getString(1);
                String s2 = rs.getString(2);
                s1 = rs.getString("VID");
                s2 = rs.getString("VALUE");
               
                
            }

            resultTable = rs.getString(resultTable);
        } catch (SQLException e) {
            
       } finally {
            rs.close();
            stmt.close();
            
        }
        
       return resultTable;
    }
    // ####################  Count auf Tabelle  #####################################################
    
    public static int countRows(Connection conn, String tableName) throws SQLException {
        // select the number of rows in the table
        Statement stmt = null;
        ResultSet rs = null;
        int rowCount = -1;
        try {
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT count(*) FROM " + tableName); //tableName);
            // get the number of rows from the result set
            rs.next();
            rowCount = rs.getInt(1);
        } finally {
            rs.close();
            stmt.close();
        }

        return rowCount;
    }
    
    

}


:rtfm:
 

c_sidi90

Top Contributor
Ich würde ein DefaultTableModel nehmen, nennen wir es mal "dtm"
Java:
 DefaultTableModel dtm = new DefaultTableModel()


Erstell dir eine Methode, welche als Parameter ein ResultSet und ein TableModel übergebgen bekommt. In diesem Beispiel das dtm und ein ResultSet aus deiner Abfrage "SELECT * FROM TABLE XXX".

Java:
private void putRSinTableModel(ResultSet rs, DefaultTableModel dtm) {
       
		ResultSetMetaData rsmd = null;
        int clmCnt = -1;
       
        try {
            rsmd = rs.getMetaData();
            clmCnt = rsmd.getColumnCount();
 
        } catch (SQLException e) {
        	 JOptionPane.showMessageDialog(null,e.getMessage(),"Fehler",JOptionPane.ERROR_MESSAGE);
        }
 
        if (rsmd == null || clmCnt == -1) {
            throw new RuntimeException("rsmd is null");
        }
        
        try {
            
        	rs.beforeFirst();
            rs.last();
            int rowCnt = rs.getRow();
            rs.beforeFirst();
 
            Object[][] odata = new Object[rowCnt][clmCnt];
            Object[] clmHeaders = new Object[clmCnt];
           
            //Hier werden dem ObjektArray clmHeaders die Spaltenüberschriften übergeben
            for (int i = 1; i <= clmCnt; i++) {
                clmHeaders[i - 1] = rsmd.getColumnName(i);
            }
 
            int row = 0;

            //SQL Daten in das 2D Object Array laden
            while (rs.next()) {
 
                for (int i = 1; i <= clmCnt; i++) {
                    odata[row][i - 1] = rs.getString(i);
                }
                row++;
            }
 
            dtm.setDataVector(odata, clmHeaders); //Hier übergibst du deinem TableModel die neuen Daten.
           JTable.updateUI();
           JTable.setModel(dtm); //Deiner Tabelle das Model übergeben
           
        } catch (SQLException e1) {
        	 JOptionPane.showMessageDialog(null,e1.getMessage(),"Fehler",JOptionPane.ERROR_MESSAGE);
        }
    }
 
Zuletzt bearbeitet:
S

SlaterB

Gast
grundsätzlich ist das eine bedenkliche Frage,
da steht der Code zur JTable in einer Schleife, wird für jede Zeile ausgeführt, wie auch selber erkannt,

dann ist es nicht möglich durch eigenes Denken zur Erkenntnis zu kommen, dass die JTable NACH der Schleife erstellt werden sollte,
vorher alle Daten zusammensammeln?

für Anfänger-Aufgaben, erstes Kennenlernen von Schleifen & Co. ist das ja noch ein vertretbares Problem,
aber bevor man je Oracle oder JTable hört, sollte man sowas im Grundsatz eigentlich schon Ewigkeiten beherrschen..
 
S

SlaterB

Gast
die Wahrheit kann nie herabwürdigend sein und auf einen sauberen Umgangston achte ich stehts aufs äußerste,
aber jedem steht die Interpretation natürlich frei

(edit: Kritik schon wieder editiert)
 
Zuletzt bearbeitet von einem Moderator:

dior

Bekanntes Mitglied
War eigentlich nicht als Kritik gedacht, war mehr Frust... :(
Es ist ja nicht so das ich das mache weil ich gerade Lust habe etwas zu programmieren was mir mit meinen JavaKenntnissen eigenltich viel zu hoch ist... aber manchmal muss man eben Dinge tun...

Habe jetzt den JTable aufruf nach dem Case, aber es bleibt ein Problem:
Innerhalb der Schleife gibt mir die Konsole mit der Println alle Werte richtig aus. In der Tabelle nur die letzte Zeile...

Java:
    Vector data = null; 
           Vector title = null;
           Vector rowA = null;
           Vector rowB = null;
           Vector rowC = null;
        try {
         
            Statement stmt = null;
            ResultSet rs = null;
                        
          
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT * FROM " + tableName); //tableName);
      
            int count = 1;
            
        
            while (rs.next() ) {
                
                
                String s1 = rs.getString(1);
                String s2 = rs.getString(1);
                String s3 = rs.getString(1);
                String s4 = rs.getString(1);
                String s5 = rs.getString(1);
                String s6 = rs.getString(1);
                s1 = rs.getString("VID");
                s2 = rs.getString("VALUE");
                s3 = rs.getString("FILTER");
                s4 = rs.getString("SHORTTEXT");
                s5 = rs.getString("UNUSED");
                s6 = rs.getString("ORDINAL");
                
                System.out.println("Zeile:    " + count);
                System.out.println(s1 + " | " + s2 + " | " + s3 + " | " + s4 + " | " + s5 + " | " + s6 + "\n");
                
               count = count+1;
                

            
        data = new Vector();
             rowA = new Vector();
             
                rowA.add(  s1 );
                rowA.add(  s2 );
                rowA.add(  s3 );
                rowA.add(  s4 );
                rowA.add(  s5 );
                rowA.add(  s6 );
             rowB = new Vector();
                rowB.add(  s1 );
                rowB.add(  s2 );
                rowB.add(  s3 );
                rowB.add(  s4 );
                rowB.add(  s5 );
                rowB.add(  s6 );
             rowC = new Vector();
                rowC.add(  s1 );
                rowC.add(  s2 );
                rowC.add(  s3 );
                rowC.add(  s4 );
                rowC.add(  s5 );
                rowC.add(  s6 );
        
            
                
        // Die Titel für das Table
         title = new Vector();
            title.add( "VID" );
            title.add( "VALUE" );
            title.add( "FILTER" );
            title.add( "SHORTTEXT" );
            title.add( "UNUSED" );
            title.add( "ORDINAL" );
                 
            } 

        }         catch (Exception e){}
            
        
        data.add( rowA );
        data.add( rowB );
        data.add( rowC );
        // Das JTable initialisieren
        JTable table = new JTable(  data, title );
        
        JFrame frame = new JFrame( "Demo" );
        frame.getContentPane().add( new JScrollPane( table ) );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.pack();
        frame.setVisible( true );
        
    }
 
S

SlaterB

Gast
der title-Vektor kann offensichtlich auch hinter die Schleife,
und du darst eben nicht für jede Zeile die Daten komplett neuerzeugen

data muss vor der Schleife angelegt werden, rowA, B, C sind ganz gut, oder noch besser nur rowA wie vorher, wozu B und C?

da diese jedenfalls jedes Mal neu erstellt werden und gemerkt werden sollten gehört
Java:
        data.add( rowA );
        data.add( rowB );
        data.add( rowC );
wiederum IN die Schleife
 

dior

Bekanntes Mitglied
So jetzt gehts... Vector data = data = new Vector(); noch vor die Schleife und rowB und rowC entfernt... und er zeigt mir alle Zeilen an!

vielen Dank für die Hilfe!

und nichts für ungut für meinen kleinen "Frust" am beginn :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R HSQLDB Tabelle in JTable übertragen Datenbankprogrammierung 3
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