ResultSet에서 JTable 채우기
제공된 코드 조각은 ResultSet을 사용하여 데이터베이스에서 검색된 데이터로 JTable을 채우는 것을 목표로 합니다. 그러나 다음 오류가 발생합니다.
java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
이 문제를 해결하기 위한 대체 접근 방식을 살펴보고 ResultSet에서 DefaultTableModel을 효과적으로 생성하는 방법을 살펴보겠습니다.
다음에서 모델 생성 ResultSet
다음 코드는 buildTableModel을 사용하여 ResultSet에서 DefaultTableModel을 빌드합니다. 메서드:
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에서 열 이름과 데이터를 추출하고 JTable에 할당할 수 있는 DefaultTableModel을 반환합니다.
코드 업데이트
이 메소드를 사용하려면 코드에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!