我正在嘗試創(chuàng)建一個框架來顯示我數(shù)據(jù)庫中的所有電影名稱,然后他們在框架中選擇一行來執(zhí)行另一個查詢。我有一個 ResultSet (rs),它接收查詢執(zhí)行的結(jié)果以選擇電影的名稱。之后,我在 SQLTableModel 中使用 rs 來創(chuàng)建 JTable 并顯示在我的框架中。該表顯示了我數(shù)據(jù)庫中所有電影的名稱。一切都很好。但是,當(dāng)我選擇一行時,我使用相同的 rs 接收另一個查詢,該查詢在我的數(shù)據(jù)庫中選擇我在 JTable 中選擇的電影的所有信息,但我得到了一些錯誤。首先,我在 JTable 中選擇的行丟失了值(電影的名稱)。但是在其他行中沒有任何反應(yīng)。其次,我的控制臺在函數(shù)“getValueAt”中向我顯示了一個來自 SQLTableModel 的錯誤,提示“錯誤:ResultSet 關(guān)閉后不允許進(jìn)行#0 操作”。我在 stackoverflow 中搜索了一些解決方案,但沒有成功。我做了一些測試。如果我的 ResultSet (rs) 在我在 SQLTableModel 中使用它之前收到多個查詢,則一切正常。但是在 SQLTableModel 中使用它之后,如果我再次嘗試使用它,就會出現(xiàn)我提到的錯誤??蚣芸蛻舳?javapublic class FrameCliente { JFrame frameCliente; JTable table; BancoDeDados bd; ResultSet rs; public FrameCliente() { bd = new BancoDeDados(); frameCliente = new JFrame(); table = new JTable(); rs = bd.listar("SELECT fil_nome Nome FROM filme"); table.setModel(new SQLTableModel(rs)); table.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if(table.getSelectedRowCount() > 0) { rs = bd.listar(" SELECT * FROM filme WHERE fil_nome = '" + table.getValueAt(table.getSelectedRow(), 0) + "'"); } } }); frameCliente.add(new JScrollPane(table)); frameCliente.setTitle("Filmes"); frameCliente.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frameCliente.setSize(800, 300); frameCliente.setLocationRelativeTo(null); frameCliente.setVisible(true); }}
在 AbstractTableModel 中使用 ResultSet 后關(guān)閉 ResultSet
婷婷同學(xué)_
2023-03-09 13:55:42