JTable aus ResultSet füllen
Das bereitgestellte Code-Snippet zielt darauf ab, eine JTable mit Daten zu füllen, die mithilfe von ResultSet aus einer Datenbank abgerufen wurden. Es tritt jedoch der folgende Fehler auf:
java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
Lassen Sie uns einen alternativen Ansatz zur Lösung dieses Problems untersuchen und zeigen, wie Sie effektiv ein DefaultTableModel aus ResultSet erstellen können.
Erstellen eines Modells aus ResultSet
Der folgende Code erstellt ein DefaultTableModel aus einem ResultSet unter Verwendung des buildTableModel Methode:
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); } }
Diese Methode extrahiert Spaltennamen und Daten aus dem ResultSet und gibt ein DefaultTableModel zurück, das dann einer JTable zugewiesen werden kann.
Aktualisierung des Codes
Um diese Methode zu verwenden, aktualisieren Sie die getnPrintAllData-Methode in Ihrem Code als folgt:
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){ // ... } }
Dies sollte den Fehler beheben und es Ihnen ermöglichen, die JTable erfolgreich mit Daten aus dem ResultSet zu füllen.
Das obige ist der detaillierte Inhalt vonWie fülle ich eine JTable aus einem ResultSet in Java und vermeide „java.lang.IllegalStateException'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!