Rumah >Java >javaTutorial >Bagaimana untuk Mengisi JTable daripada ResultSet di Java dan Elakkan `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
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); } }
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){ // ... } }
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!