Rumah > Java > javaTutorial > Bagaimana untuk Mengisi JTable daripada ResultSet di Java dan Elakkan `java.lang.IllegalStateException`?

Bagaimana untuk Mengisi JTable daripada ResultSet di Java dan Elakkan `java.lang.IllegalStateException`?

DDD
Lepaskan: 2024-12-01 09:51:13
asal
277 orang telah melayarinya

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

Mengisi JTable daripada ResultSet

Coretan kod yang disediakan bertujuan untuk mengisi JTable dengan data yang diambil daripada pangkalan data menggunakan ResultSet. Walau bagaimanapun, ia menghadapi ralat berikut:

java.lang.IllegalStateException: SQLite JDBC: inconsistent internal
state
Salin selepas log masuk

Mari kita teroka pendekatan alternatif untuk menyelesaikan isu ini dan tunjukkan cara mencipta DefaultTableModel daripada ResultSet dengan berkesan.

Mencipta Model daripada ResultSet

Kod berikut membina DefaultTableModel daripada ResultSet menggunakan kaedah 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);

    }

}
Salin selepas log masuk

Kaedah ini mengekstrak nama lajur dan data daripada ResultSet dan mengembalikan DefaultTableModel, yang kemudiannya boleh diberikan kepada JTable.

Mengemas kini Kod

Untuk menggunakan kaedah ini, kemas kini kaedah getnPrintAllData dalam kod anda seperti berikut:

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){
        // ...
    }
}
Salin selepas log masuk

Ini sepatutnya menyelesaikan ralat dan membolehkan anda berjaya mengisi JTable dengan data daripada ResultSet.

Atas ialah kandungan terperinci Bagaimana untuk Mengisi JTable daripada ResultSet di Java dan Elakkan `java.lang.IllegalStateException`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan