首页 > Java > java教程 > 如何从 Java 中的结果集填充 JTable 并避免'java.lang.IllegalStateException”?

如何从 Java 中的结果集填充 JTable 并避免'java.lang.IllegalStateException”?

DDD
发布: 2024-12-01 09:51:13
原创
277 人浏览过

How to Populate a JTable from a ResultSet in Java and Avoid `java.lang.IllegalStateException`?

从 ResultSet 填充 JTable

提供的代码片段旨在使用 ResultSet 从数据库检索的数据填充 JTable。但是,它遇到以下错误:

java.lang.IllegalStateException: SQLite JDBC: inconsistent internal
state
登录后复制

让我们探索一种替代方法来解决此问题,并演示如何有效地从 ResultSet 创建 DefaultTableModel。

从以下位置创建模型ResultSet

以下代码使用 ResultSet 从 ResultSet 构建 DefaultTableModel buildTableModel 方法:

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class ResultSetTableModel {

    public static DefaultTableModel buildTableModel(ResultSet rs)
            throws SQLException {

        ResultSetMetaData metaData = rs.getMetaData();

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

        // Table data
        Vector<Vector<Object>> data = new Vector<>();
        while (rs.next()) {
            Vector<Object> vector = new Vector<>();
            for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
                vector.add(rs.getObject(columnIndex));
            }
            data.add(vector);
        }

        return new DefaultTableModel(data, columnNames);

    }

}
登录后复制

此方法从 ResultSet 中提取列名和数据并返回 DefaultTableModel,然后可以将其分配给 JTable。

更新代码

要使用此方法,请将代码中的 getnPrintAllData 方法更新为如下所示:

public void getnPrintAllData(){
    String name, supplier, id;
    // ...
    try{
        res = statement.executeQuery();
        testResultSet(res);
        DefaultTableModel dtm = ResultSetTableModel.buildTableModel(res);
        gui.jTable1.setModel(dtm);
        // ...
    }
    catch(Exception e){
        // ...
    }
}
登录后复制

这应该可以解决错误并允许您使用 ResultSet 中的数据成功填充 JTable。

以上是如何从 Java 中的结果集填充 JTable 并避免'java.lang.IllegalStateException”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板