Erro de Resultset "operation not allowed after resultset closed"

4 respostas
F

pessoal ja vi esse erro sendo reportado aqui no forum mas naum consegui resolver de jeito nenhum…
esse metodo faz um select no banco através de 3 parametros e retorna 4 valores…

quando eu debugo o código verifico que ao chegar nessa linha

while (rs.next()) {

ele da o erro “operation not allowed after resultset closed”
naum consigo visualizar onde estou fechando o resultset

alguém ajuda? como conserto?

aki o metodo completo.

public String buttonConsultar_action() throws Exception { // TODO: Processe a ação. O valor de retorno é um nome de caso // de navegação em que nulo retornará à mesma página. ResultSet rs =null; PreparedStatement ps = null; Connection conn = null; try { String query = null; conn = ConexaoBD.getConnection(); query = "Select te.numPlaca, te.horaInicial, te.horaFinal, te.idEticket from easypark.tbeticket te " + "inner join easypark.tbsolicitanteeticketvaga tsv " + "on te.idEticket = tsv.idEticket" + " inner join easypark.tbvaga tv" + " on tsv.idVaga = tv.idVaga" + " inner join easypark.tblocalizacao tl" + " on tv.idLocalizacao = tl.idLocalizacao" + " where numPlaca = ? and te.idEticket = ? and tl.idLocalizacao = ?"; ps = conn.prepareStatement(query); ps.setString(1, textFieldPlaca.getText().toString()); ps.setInt(2, Integer.parseInt(textFieldNumEticket.getText().toString()) ); ps.setInt(3, intBairro); rs = ps.executeQuery(); while (rs.next()) { setPlaca(rs.getString("numPlaca")); setHoraInicial(rs.getTime("horaInicial")); setHoraFinal(rs.getTime("horaFinal")); setIdEticket(rs.getInt("idEticket")); } } catch (Exception e) { e.printStackTrace(); } finally { ConexaoBD.close(conn, ps, rs); } labelDadosConsulta.setVisible(true); tableResultadoConsulta.setVisible(true); return null; }

4 Respostas

julianofischer

tente “rs.hasNext()” ao invés de “rs.next()”.

F

eu consegui resolver.

no inicio do metodo onde declarei o resultset, preparedStatement e a conexão como null, eu apaguei e criei eles
ja diretamente dentro do try e funcionou!
nos parametros do fim da conexão no final, coloquei os tres como null.

vlw a atenção

B

Feijones:

while (rs.next()) { setPlaca(rs.getString("numPlaca")); setHoraInicial(rs.getTime("horaInicial")); setHoraFinal(rs.getTime("horaFinal")); setIdEticket(rs.getInt("idEticket")); }

Não entendi por que você está setando os mesmos 4 atributos milhares de vezes.

F

Bruno Laturner:
Feijones:

while (rs.next()) { setPlaca(rs.getString("numPlaca")); setHoraInicial(rs.getTime("horaInicial")); setHoraFinal(rs.getTime("horaFinal")); setIdEticket(rs.getInt("idEticket")); }

Não entendi por que você está setando os mesmos 4 atributos milhares de vezes.

rpz… agora qe vc falou, nem eu! ^^
copiei de um código antigo meu que tava funcionando, mas esse ae funcionou tb
ele ta setando os atributos de acordo com o numero de linhas ki o select retorna, mas acho ki um if ali resolveria… vou testar.

Criado 23 de novembro de 2009
Ultima resposta 26 de nov. de 2009
Respostas 4
Participantes 3