Comment remplir une JTable à partir d'un ResultSet
Problème :
Vous rencontrez problèmes de remplissage d'une JTable à partir d'un ResultSet et de réception d'une "IllegalStateException" erreur.
Réponse :
Utilisation d'un SwingWorker et d'instructions try-with-resource :
Pour simplifier le code et utilisez des fonctionnalités avancées, envisagez d'utiliser un SwingWorker et l'instruction try-with-resource. Le SwingWorker permet d'effectuer des tâches en arrière-plan sans interférer avec le thread de l'interface graphique. L'instruction try-with-resources garantit que les ressources sont correctement fermées.
Voici un exemple :
import java.sql.*; import javax.swing.*; import javax.swing.table.*; public class GUI extends JFrame { // ... (remaining GUI code) private void loadData() { LOG.info("START loadData method"); button.setEnabled(false); try (Connection conn = DriverManager.getConnection(url, usr, pwd); Statement stmt = conn.createStatement()) { ResultSet rs = stmt.executeQuery("select * from customer"); ResultSetMetaData metaData = rs.getMetaData(); // Names of columns Vector<String> columnNames = new Vector<>(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { columnNames.add(metaData.getColumnName(i)); } // Data of the table Vector<Vector<Object>> data = new Vector<>(); while (rs.next()) { Vector<Object> vector = new Vector<>(); for (int i = 1; i <= columnCount; i++) { vector.add(rs.getObject(i)); } data.add(vector); } tableModel.setDataVector(data, columnNames); } catch (Exception e) { LOG.log(Level.SEVERE, "Exception in Load Data", e); } button.setEnabled(true); LOG.info("END loadData method"); } }
Ce code utilise un SwingWorker pour effectuer le chargement des données en arrière-plan. Il exploite également l'instruction try-with-resources pour garantir que la connexion et l'instruction sont correctement fermées.
N'oubliez pas de remplacer url, usr et pwd par les valeurs appropriées pour votre connexion à la base de données.
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!