ホームページ > Java > &#&チュートリアル > Java で ResultSet から JTable を設定し、「java.lang.IllegalStateException」を回避する方法

Java で ResultSet から JTable を設定し、「java.lang.IllegalStateException」を回避する方法

DDD
リリース: 2024-12-01 09:51:13
オリジナル
272 人が閲覧しました

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 を効率的に作成する方法を示します。

Creating a Model from 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 で ResultSet から JTable を設定し、「java.lang.IllegalStateException」を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート