Le problème vient de la façon dont vous récupérez les données dans getStuff()
. Chaque fois que vous visitez getStuff()
vous obtenez un nouveau ResultSet
mais vous ne le fermez pas.
Cela viole l'attente de la Statement
classe (voir ici - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Par défaut, un seul objet ResultSet par objet Statement peut être ouvert en même temps. Par conséquent, si la lecture d'un objet ResultSet est entrelacée avec la lecture d'un autre, chacun doit avoir été généré par des objets Statement différents. Toutes les méthodes d'exécution de l'interface Statement ferment implicitement l'objet ResultSet actuel d'une instruction s'il en existe un ouvert.
Ce qui rend les choses encore pires, ce sont les rs
du code d'appel. Il est également dérivé de la statement
terrain mais il n'est pas fermé.
Conclusion :vous avez plusieurs ResultSet
appartenant au même Statement
objet ouvert simultanément.