无法使用两个类从ResultSet填充jTable

时间:2017-12-10 20:42:41

标签: java swing jtable resultset

我有一个查询类,另一个用于GUI。所以在我的GUI类中,我有这些 public 成员:

model = (DefaultTableModel) table.getModel();
table = new JTable();

在查询类中我有这个方法:

public void selectPassengers(int rows) {
        PreparedStatement pst = null;
        ResultSet rs = null;

        String query = "SELECT * FROM brs.passenger";
        try {
            pst = con.prepareStatement(query);
            rs = pst.executeQuery();

            String[] attributes = new String[9];

            GUI rg = new GUI();

            while (rs.next()) {
                attributes[0] = rs.getString(1);
                attributes[1] = rs.getString(2);
                attributes[2] = rs.getString(3);
                rg.model.insertRow(rg.table.getRowCount(), new Object[] {
                        attributes[0], attributes[1], attributes[2]});
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

它没有插入也没有抛出异常。它只是做了什么。尽管如果我尝试在while-loop内打印到控制台,它会打印出正确的数据。数据库和连接都很好。

执行查询后我应该在GUI类中做些什么吗?

快捷方式没问题!我正在寻找最简单的方法。

1 个答案:

答案 0 :(得分:0)

model = (DefaultTableModel) table.getModel();
table = new JTable();

上述代码毫无意义。

首先,你从#34;表中获得模型"变量

然后创建一个新表。创建新表时,该表会创建一个新模型,因此它不再引用原始模型。

因此,当您更新模型中的数据时,您将更新旧模型,而不是表的当前模型。

基本代码应为:

DefaultTableModel model = new DefaultTableModel(...);
JTable table = new JTable( model );

现在,如果更新模型中的数据,表和模型将同步。