Java JTable不';SQL插入后无法更新

Java JTable不';SQL插入后无法更新,java,sql,swing,jtable,Java,Sql,Swing,Jtable,我整天都在为一个愚蠢的问题苦苦挣扎。我用executeupdate插入数据库中的一行。我尝试了fireTableDataChanged、setModel和我在这里能找到的每一个提示。 但一切都没有改变。数据被插入,只有当我重新打开我的应用程序时,我才能看到我的插入 我希望这门课足以解决我的问题。否则,我可以粘贴executeupdate语句或main类 我真的希望你能帮助我 表格 public TabelleErfasst() { super(new GridLa

我整天都在为一个愚蠢的问题苦苦挣扎。我用executeupdate插入数据库中的一行。我尝试了fireTableDataChanged、setModel和我在这里能找到的每一个提示。 但一切都没有改变。数据被插入,只有当我重新打开我的应用程序时,我才能看到我的插入

我希望这门课足以解决我的问题。否则,我可以粘贴executeupdate语句或main类

我真的希望你能帮助我

表格

    public TabelleErfasst()
    {
        super(new GridLayout(1, 0));

        JTable table = new JTable();


        table.setPreferredScrollableViewportSize(new Dimension(950, 300));
        table.setFillsViewportHeight(true);

        DefaultTableModel model = new DefaultTableModel();
        model.setRowCount(0);
        table.setModel(model);


        Object[] columnsName = new Object[7];
        columnsName[0] = "Vorname";
        columnsName[1] = "Nachname";
        columnsName[2] = "Straße";
        columnsName[3] = "Stadt";
        columnsName[4] = "Hat abgestimmt für";
        columnsName[5] = "ID";
        columnsName[6] = "Sterne";

        model.setColumnIdentifiers(columnsName);

        Object[] rowData = new Object[8];

        ArrayList<Stimmzettel> stimmzettel = ErfasstDatabase.getStimmzettel();

        for (int i = 0; i < stimmzettel.size(); i++) {
            rowData[0] = stimmzettel.get(i).getVorName();
            rowData[1] = stimmzettel.get(i).getNachName();
            rowData[2] = stimmzettel.get(i).getStrasse();
            rowData[3] = stimmzettel.get(i).getStadt();
            rowData[4] = stimmzettel.get(i).getAbgestimmtFuer();
            rowData[5] = stimmzettel.get(i).getProjektId();
            rowData[6] = stimmzettel.get(i).getSterne();
            model.addRow(rowData);
        }

        // Ändere Spaltenbreite, wenn i == 1 -> breiter
        TableColumn column = null;
        for (int i = 0; i < 7; i++) {
            column = table.getColumnModel().getColumn(i);
            if (i == 1) {
                column.setPreferredWidth(150); //
            } else if (i == 4) {
                column.setPreferredWidth(200);
            } else if (i == 5) {
                column.setPreferredWidth(45);
            } else if (i == 6) {
                column.setPreferredWidth(45);
            } else {
                column.setPreferredWidth(150);
            }

        }

        JScrollPane scrollPane = new JScrollPane(table);

        add(scrollPane);

    }
}
我的MainClass中的代码片段(我删除了一些与我的问题无关的部分)


因此,基于您的上下文代码,我想说,在下面的某个地方,您没有将数据添加到
TableModel
,但这只是一个猜测,我更新了我的代码。数据被插入。我可以在数据库中看到它,也可以在我再次启动后在我的应用程序中看到它。就像@MadProgrammer说的,insert是到数据库中的,而不是到model,你的数据库和
JTable
之间的连接是由什么控制的?对不起,我是个初学者,我真的不明白你缺少了什么?你能详细解释一下吗?
public class DBProjektController {
    public void insert(String f1, String f2, String f3, String f4, String f5, String f6, String f7) {
        if (f1.isEmpty()) {
            System.out.println("The ID cannot be null!");
        } else {

            try {
                Connection con;
                con = DriverManager.getConnection("jdbc:ucanaccess://C:/Projekt/DB/erfasst.accdb");
                Statement statement = con.createStatement();
                statement.executeUpdate("INSERT INTO ERFASST(VORNAME, NAME, STRASSE, ORT, ABGESTIMMT_PROJEKT, PROJEKTID, STERNE) VALUES('" + f1 + "','" + f2 + "','" + f3 + "','" + f4 + "','" + f5 + "','" + f6 + "','" + f7 + "')");

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
    }
}
public class Gui extends JFrame {
    /**
         * 
         */

    private static final long serialVersionUID = 1L;
    // Frame
    JFrame frame = new JFrame();

    // Erstelle JTabbedPane
    JTabbedPane jtp = new JTabbedPane();

    // Panel
    JPanel panel = new JPanel();



public Gui() {



        frame.getContentPane().add(jtp);
JPanel pAbstimmung = new JPanel(null);

TabelleErfasst tabelleErfasst = new TabelleErfasst();

        tabelleErfasst.setSize(950, 350);
        tabelleErfasst.setLocation(35, 80);
        JButton bSterneExport = new JButton("Sterne exportieren");
        bSterneExport.setSize(300, 60);
        bSterneExport.setLocation(682, 480);
        JButton bEintragNeu = new JButton("Ausgewählten Eintrag löschen");
        bEintragNeu.setSize(300, 60);
        bEintragNeu.setLocation(358, 480);
        JButton bEintragLoeschen = new JButton("Alle Einträge löschen");
        bEintragLoeschen.setSize(300, 60);
        bEintragLoeschen.setLocation(35, 480);
        JLabel lZettelSession = new JLabel("Alle eingetragenen Stimmzettel der aktuellen Session");

// Inhalte zu Abstimmungsergebnis
        pAbstimmung.add(tabelleErfasst);
        pAbstimmung.add(bEintragLoeschen);
        pAbstimmung.add(bEintragNeu);
        pAbstimmung.add(bSterneExport);
        pAbstimmung.add(lZettelSession);
jtp.addTab("Abstimmungsergebnis", pAbstimmung);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


bStimmeKontrolle.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Thread(new Runnable() {
                    public void run() {
                        new DBProjektController().insert(erfasstVorname.getText(), erfasstNachname.getText(),
                                erfasstStrasse.getText(), erfasstStadt.getText(), projektAuswahl.getText(),
                                erfasstId.getText(), sterneGruppe.getSelection().getActionCommand());

                    }
                }).start();
                TabelleErfasst tabelleErfasst  = new TabelleErfasst();


                jtp.setSelectedIndex(3);
            }
        });

        // Titel des Fensters
        frame.setTitle("AfVF");
        // Gr��e des Fensters
        frame.setResizable(false);

        frame.pack();
        frame.setSize(1024, 650);
        frame.setVisible(true);

    }

}