Result set is closed

2 respostas
K

Erro: org.firebirdsql.jdbc.FBSQLException: The result set is closed

Olá a todos! Estou fazendo um programa de cadastro de clientes e fornecedores e estou tendo problemas quando tento listar os dados na JTable que estão na base de dados. Quando clico no botão listar, ele lista somente um registro de cada coluna e da o erro q está acima.
Código fonte do comando listar:

DefaultTableModel JTabela = (DefaultTableModel)grid.getModel(); try{ while(JTabela.getRowCount()> 0){ JTabela.removeRow(0); } resultado = con.stm.executeQuery("SELECT * FROM cadastrodeclientes"); while(resultado.next()){ JTabela.addRow(new Object[]{ resultado.getObject("codigo").toString(), resultado.getObject("telefone").toString(), resultado.getObject("nomefantasia").toString(), resultado.getObject("razaosocial").toString(), resultado.getObject("email").toString(), resultado.getObject("site").toString() }); con.stm.close(); } }catch (SQLException e){ JOptionPane.showMessageDialog(null,"Erro ao listar" + e); }

Como resolvo este erro?

2 Respostas

A

você colocou o close antes de terminar de passar os valores:

mude o local: está assim agora
resultado = con.stm.executeQuery("SELECT * FROM cadastrodeclientes");  
           while(resultado.next()){  
               JTabela.addRow(new Object[]{  
                   resultado.getObject("codigo").toString(),  
                   resultado.getObject("telefone").toString(),  
                   resultado.getObject("nomefantasia").toString(),  
                   resultado.getObject("razaosocial").toString(),  
                   resultado.getObject("email").toString(),  
                   resultado.getObject("site").toString()  
               });  
               con.stm.close();  
           }
e tem que ficar assim:
resultado = con.stm.executeQuery("SELECT * FROM cadastrodeclientes");  
           while(resultado.next()){  
               JTabela.addRow(new Object[]{  
                   resultado.getObject("codigo").toString(),  
                   resultado.getObject("telefone").toString(),  
                   resultado.getObject("nomefantasia").toString(),  
                   resultado.getObject("razaosocial").toString(),  
                   resultado.getObject("email").toString(),  
                   resultado.getObject("site").toString()  
               });  
               
           } 

 con.stm.close();

verifica se é só isso mesmo
T+

lrgalego

Preste atenção na mensagem de erro.
Ela te diz que o result set está fechado. e é exatamente o que vc faz com essa linha de código:

con.stm.close();

você só pode fechar o statement depois de ler toda a informação que quer dele.

Criado 29 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 2
Participantes 3