MySQL JTable in JScrollPane nach insert aktualisieren

ConzT

Mitglied
Hi alle zusammen,

ich beschäftige mich erst seit kurzem mit Datenbankprogrammierung und hab es zumindest mal so weit geschafft, dass ich Daten über die Benutzeroberfläche anlegen kann und den aktuellen Inhalt der Tabelle in einem JTable in einem ScrollPane anzeige.

Mein Problem..

In der Applikation geht es einfach darum Bücher anzulegen, diese werden in einer Tabelle in einer mySql Datenbank gespeichert.

Nun möchte ich, sobald ich ein neues Buch anlege, dass die Tabelle, in der die Bücher angezeigt werden aktualisiert sind.

Dies funktioniert noch nicht so ganz...

Ich habe zwar gegoogelt und einiges darüber gelesen, dass man z.B. für DefaultTableModel die Methode fireTableDataChanged() aufrufen soll, oder den table "repaint()"en soll. Habe auch versucht dies zu implementieren aber so ganz will das nicht.

Anbei mein Code

In dieser Klasse erstelle ich den table und füge die Daten aus der Datenbank ein.
Java:
package GraphicComponents;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import model.database;

public class OutputTable {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    public static JTable table;
    private static DefaultTableModel model;
   
    public OutputTable() {
        // TODO Auto-generated constructor stub
    }

    public static JScrollPane output() {
        Connection conn = null;
        java.sql.Statement stmt = null;
        JScrollPane scrollPane = new JScrollPane();
       
        // JDBC Treiber registrieren
        try {
        Class.forName(JDBC_DRIVER);
        conn = database.connection();
        stmt = conn.createStatement();

        ResultSet rs = stmt.executeQuery("select book_name,book_author,book_number,book_shelf from bookinformation");

        // Create and display the table

        table = new JTable(buildTableModel(rs));
        scrollPane = new JScrollPane();
        scrollPane.setViewportView(table);
       
       
        } catch(SQLException | ClassNotFoundException e) {
           
        }
        return scrollPane;
    }

    public static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException {

        // names of columns
        Vector<String> cols = new Vector<String>();
        String[] columnNames = { "Title", "Author", "ISBN Nr", "Shelf" };
        int columnCount = 4;
        for (int column = 0; column < columnCount; column++) {
            cols.add(columnNames[column]);
        }

        // data of the table
        Vector<Vector<Object>> data = new Vector<Vector<Object>>();
        while (rs.next()) {
            Vector<Object> vector = new Vector<Object>();
            for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                vector.add(rs.getObject(columnIndex));
            }
            data.add(vector);
        }

        model = new DefaultTableModel(data,cols);
       
        return model;

    }
   
     public static void refreshTable() {
         model.fireTableDataChanged();
     }
}


In dieser Klasse wird der JButton instanziert und mit einem Listener versehen:

Java:
JButton addBookButton = new JButton("Add Book");
            addBookButton.setVisible(true);
            addBookButton.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent e) {
                    database.sqlQueries(bName.getText(), bAuthor.getText(), bNumber.getText(), bShelf.getText()); //Insert Statement fuer die DB!
                   
                    JOptionPane.showMessageDialog(null, "Das Buch wurde erfolgreich angelegt!");
                    OutputTable.refreshTable();
                }
            });


Hier ein Auszug aus der main klasse wo ich das scrollPane dem Frame hinzufüge

Java:
c.anchor = GridBagConstraints.LAST_LINE_START;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 1;
        c.weightx = 0.3;
        c.weighty = 0.3;
        GUI.scrollPane = OutputTable.output();
        this.add(scrollPane,c );


Habe mir überlegt, dass ich vl eventuell sogar den Table aktualisiere, nur die Anzeige nicht? Hier gibt es doch bestimmt eine einfachere Lösung als scrollpane entfernen und neu berechnen und hinzufügen?

Danke schon Mal!
 

thet1983

Top Contributor
schreib dir eine eigene methode wo du die daten zb in einen vector lädst..
zb.:
Java:
private Vector<Object>loadData(){
     Vector<Object>data = new Vector<Object>();
     String sql = "SELECT * FROM demoDb"; // oder als methoden para mitgeben lassen..
     ResultSet rs = null;
     Connection c = null;
     try{
       c = connect(); // eigene methode die eine connection verwaltet
       rs = c.createStatement().executeQuery(sql);
       while(rs.next()){
         Vector<Object>row = new Vector<Object>();
         for(int i = 1; i < rs.getMetaData().getColumnCount()+1;i++){
           row.add(rs.getObject(i));
         }
         data.add(row);
       }
       rs.close();
       c.closeConnection()
     }catch(Exception e){
       e.printStackTrace();
     }
     return data;
   }

wenn du sowas hast dann kannst du dein defaulttablemodel einfach aktualisieren
mit der model-methode
Java:
model.setDataVector(loadData(), getColNames());
model.fireTableDataChanged();

besser wäre es natürlich einen listener zuschreiben der nur neue daten lädt
da kann ich dir aber dann leider nicht wirklich helfen
 
Ä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
L jTable mit Datenbankwerten befüllen Datenbankprogrammierung 7
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
A SQLite jTable binding mit Netbeans Datenbankprogrammierung 11
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
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
J Sql Anfrage nach einer Zeile beenden Datenbankprogrammierung 6
ruutaiokwu SQL-Dump nach MariaDB laden? Datenbankprogrammierung 6
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
M SQLite Suche nach String Datenbankprogrammierung 4
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
J SQLite Datenverlust nach beenden des Programmes Datenbankprogrammierung 21
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
D Zeit von SQL nach Java Datenbankprogrammierung 2
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
AssELAss Oracle Suche nach Umlauten Ä und Ae ermöglichen Datenbankprogrammierung 11
G HSQLDB Inserts/Updates sind nach Neustart der Anwendung Datenbankprogrammierung 1
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
Z PDF nach Formate sortieren Datenbankprogrammierung 3
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
P JPA- Entities bleiben nach dem Löschen (unsichtbar?) in der Datenbank Datenbankprogrammierung 6
GianaSisters MS SQL unter Netbeans OK - nach konvertieren Absturz Datenbankprogrammierung 6
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
M Datenbankeintrag bleibt nach Löschen in JSP vorhanden Datenbankprogrammierung 8
0 Filtern nach mehreren Kriterien Datenbankprogrammierung 4
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
F SQL ordnen nach zueinander in Verhältnis gesetzten Spaltenwerten Datenbankprogrammierung 11
J SQL: Sortierung nach Wortlänge Datenbankprogrammierung 2
Java.getSkill() Datensatz / Tupel automatisch nach xy Tagen / Stunden löschen Datenbankprogrammierung 7
T JPA: NullPointerException nach persist Datenbankprogrammierung 3
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
E Hibernate Session closed nach Transaction commit? Datenbankprogrammierung 7
K Rundungsfehler bei Gleitkommazahlen von Java nach SQL Datenbankprogrammierung 2
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
tfa Apache DBCP: Reconnect nach Timeout? Datenbankprogrammierung 3
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M sql-code für suche in tabelle nach höchster transaktionsnr Datenbankprogrammierung 12
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
T Tabellen aus Datenbank 1 nach Datenbank 2 Datenbankprogrammierung 2
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
D JAVA hängt nach SQL Abfrage Datenbankprogrammierung 7
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
G File nach Blob konvertieren ? Datenbankprogrammierung 6
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Treiber nachladen oder nach Bedarf Datenbankprogrammierung 4

Ähnliche Java Themen


Oben