JAVA-update-Datenbank auf JTable Zelle ändern

Er ich bin noob auf Java (ja, Das ist nicht neu) und ich kann nicht finden, eine gute Anleitung dafür. Ich benutze jTable zur Anzeige einer Tabelle gefüllt mit Daten aus einer MySQL-Datenbank.

So weit So gut, ich bekomme die Tabelle:

JAVA-update-Datenbank auf JTable Zelle ändern

Standard Sie können klicken Sie auf eine Zelle und wechselt es in ein text-Feld kann gefüllt werden mit etwas neuem. Sie alle wissen das, aber wie kann ich dieses auch aktualisieren Sie den Wert in meine Datenbank?

Mein code:

import [...];
public class table extends JPanel {
    public String table;
    private Database db;

    public table(String tablename, Database db){

        try {
            table = tablename;
            this.db = db;

            //Get table with and height
            ResultSet res = db.query("SELECT COUNT( * ) FROM `"+table+"`");
            ResultSet res2 = db.query("SELECT COUNT( * ) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '"+table+"'");

            int rows = 0;
            int collums = 0;

            res.next();
            res2.next();

            rows = res.getInt(1);
            collums = res2.getInt(1);

            //Get table column names and set then in array
            ResultSet clom = db.query("DESCRIBE  `"+table+"`");

            String[] columnNames = new String[collums];

            int s = 0;

            while(clom.next()){
                columnNames[s] = clom.getString(1);
                s++;
            }

            //get table data and put in array
            Object[][] data = new Object[rows][collums];

            ResultSet result = db.query("SELECT * FROM `"+table+"`");

            int q = 0;

            while(result.next()){
                for(int a=0; a<= (collums - 1); a++){
                    data[q][a] = result.getString(a + 1);
                    //System.out.println(q + " - " + a);
                }
                q++;
            }

            //Make Jtable of the db result form the two array's
            final JTable table = new JTable(data, columnNames);
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
            table.setFillsViewportHeight(true);

            //do some event listening for cell change

            JScrollPane scrollPane = new JScrollPane(table);
            JFrame frame = new JFrame("table editor");
            scrollPane.setOpaque(true);
            frame.setContentPane(scrollPane);
            frame.pack();
            frame.setSize(600, 800);
            frame.setVisible(true);
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }
}

Ich denke, dass ich zu binden, müssen einige Art von Tisch-listener und wenn sich etwas ändert nehme ich alle Werte aus der Tabelle und aktualisieren Sie Sie mit einer Abfrage.

Wie kann ich dies tun?

Dies ist mein pseudo-code:

table.bindCellEventListner(callback(t){
     Array row = t.getAllValuesAsArrayOfRow();

     String data = "";

     int f = 0
     while(row.next()){
         data .= "`"+clom[f]+"` = '"+row[f]+"',"
         f++;
     }
     data.delLastChar();
     db.query("UPDATE `"+table+"` SET "+data+" WHERE `id` ="+row[0]+";");

});

InformationsquelleAutor botenvouwer | 2013-06-21

Schreibe einen Kommentar