首页 >Java >java教程 >如何在 Java 中从 ResultSet 填充 JTable 而不会出现 IllegalStateException?

如何在 Java 中从 ResultSet 填充 JTable 而不会出现 IllegalStateException?

Susan Sarandon
Susan Sarandon原创
2024-12-27 12:12:09171浏览

How to Populate a JTable from a ResultSet in Java Without an IllegalStateException?

从 ResultSet 填充 JTable

尝试使用您提供的代码从 ResultSet 填充 JTable 时,您可能会遇到错误“java.util.JTable”。 lang.IllegalStateException:SQLite JDBC:内部状态不一致。”为了解决这个问题并简化流程,请考虑采用更简单的方法。

以下示例演示了从 ResultSet 实例构造模型的方法:

public static void main(String[] args) throws Exception {
    // Obtain the Connection
    
    ResultSet rs = stmt.executeQuery("select * from product_info");

    // Create and display the table
    JTable table = new JTable(buildTableModel(rs));

    // Close the Connection

    JOptionPane.showMessageDialog(null, new JScrollPane(table));

}

“buildTableModel”方法定义为:

public static DefaultTableModel buildTableModel(ResultSet rs)
        throws SQLException {

    ResultSetMetaData metaData = rs.getMetaData();

    // Column names
    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
    for (int column = 1; column <= columnCount; column++) {
        columnNames.add(metaData.getColumnName(column));
    }

    // Table data
    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);

}

以上是如何在 Java 中从 ResultSet 填充 JTable 而不会出现 IllegalStateException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn