即使查询数据,DefaultTableModel 也是空的

DefaultTableModel is empty even tho data is queried

我尝试借助 DefaultTableModel class 将我的 ResultSet 数据放入 JTable。作为一种解决方案,我在 Whosebug 上找到了一个解决方案,但对其进行了一些修改(此处并不相关):

    public static DefaultTableModel buildTableModel(ResultSet rs) {
    try {
        ResultSetMetaData metaData = rs.getMetaData();
        Vector<String> columnNames = new Vector<String>();
        int columnCount = metaData.getColumnCount();
        for (int column = 1; column <= columnCount;++column) {
            columnNames.add(metaData.getColumnName(column));
        }
        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);
        }
        return new DefaultTableModel(data, columnNames);
    } catch(SQLException e) {
        e.printStackTrace();
        return new DefaultTableModel(new Vector<>(), new Vector<>());
    }
}

当我调试这段代码时,我能够看到:

有人可以帮我解决这个问题或解释问题出在哪里吗?当我将生成的 DefaultTableModel 绑定到我的 JTable 时,它​​是空的(没有显示数据)。

我建议使用 AbstractTableModel 作为基础。几年前,我在 Sun 的示例中发现了一个名为 JDBCAdapter.java 的 class。这 class 可以满足您的需求。在网络上搜索此 class,您将得到可能满足您大部分需求的东西。这可能是一个挑战,如果您的应用程序应该能够将更改写回数据库,但只是为了显示 table 没问题。

我不久前才发现这个问题:问题是游标被设置到最后一行,因为其他方法已经迭代了同一个结果集,因此游标必须再次设置为第一行 first -ResultSet 的方法 class.