Remplir JTable à partir de ResultSet
Lorsque vous essayez de remplir une JTable à partir d'un ResultSet à l'aide du code fourni, vous pouvez rencontrer l'erreur "java. lang.IllegalStateException : SQLite JDBC : état interne incohérent." Pour résoudre ce problème et simplifier le processus, envisagez d'utiliser une méthode plus simple.
L'exemple suivant montre une manière de construire un modèle à partir d'une instance ResultSet :
public static void main(String[] args) throws Exception { // Obtain the Connection ResultSet rs = stmt.executeQuery("select * from product_info"); // Create and display the table JTable table = new JTable(buildTableModel(rs)); // Close the Connection JOptionPane.showMessageDialog(null, new JScrollPane(table)); }
La méthode "buildTableModel" est défini comme :
public static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException { ResultSetMetaData metaData = rs.getMetaData(); // Column names Vector<String> columnNames = new Vector<String>(); int columnCount = metaData.getColumnCount(); for (int column = 1; column <= columnCount; column++) { columnNames.add(metaData.getColumnName(column)); } // Table data Vector<Vector<Object>> data = new Vector<Vector<Object>>(); while (rs.next()) { Vector<Object> vector = new Vector<Object>(); for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { vector.add(rs.getObject(columnIndex)); } data.add(vector); } return new DefaultTableModel(data, columnNames); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!