Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtendo java.sql.SQLException:operação não permitida após o fechamento do ResultSet


O problema está na maneira como você busca dados em getStuff() . Cada vez que você visita getStuff() você obtém um novo ResultSet mas você não fecha.

Isso viola a expectativa da Statement class (veja aqui - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html ):

Por padrão, apenas um objeto ResultSet por objeto Statement pode ser aberto ao mesmo tempo. Portanto, se a leitura de um objeto ResultSet for intercalada com a leitura de outro, cada um deve ter sido gerado por diferentes objetos Statement. Todos os métodos de execução na interface Statement fecham implicitamente o objeto ResultSet atual de uma instrução se houver um aberto.

O que torna as coisas ainda piores é o rs do código de chamada. Também é derivado da statement campo, mas não está fechado.

Conclusão:você tem vários ResultSet pertencente à mesma Statement objeto aberto simultaneamente.