ホームページ >Java >&#&チュートリアル >ResultSet から JTable を設定するときに「IllegalStateException」を回避するにはどうすればよいですか?
ResultSet から JTable を設定する方法
問題:
が発生していますResultSet から JTable を設定し、「IllegalStateException」を受け取る問題エラー。
答え:
SwingWorker と try-with-resource ステートメントの使用:
コードを簡素化し、高度な機能を利用するには、SwingWorker と try-with-resource ステートメントの使用を検討してください。 SwingWorker を使用すると、GUI スレッドを妨げることなくバックグラウンド タスクを実行できます。 try-with-resources ステートメントは、リソースが適切に閉じられることを保証します。
次に例を示します:
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"); } }
このコードは、SwingWorker を利用してバックグラウンドでデータの読み込みを実行します。また、try-with-resources ステートメントを活用して、接続とステートメントが適切に閉じられていることを確認します。
url、usr、および pwd をデータベース接続の適切な値に置き換えることを忘れないでください。
以上がResultSet から JTable を設定するときに「IllegalStateException」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。