Проблемът е в начина, по който извличате данни в getStuff()
. Всеки път, когато посещавате getStuff()
получавате нов ResultSet
но не го затваряш.
Това нарушава очакванията на Statement
клас (вижте тук - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
По подразбиране само един обект ResultSet на обект на Statement може да бъде отворен едновременно. Следователно, ако четенето на един обект ResultSet се преплита с четенето на друг, всеки трябва да е генериран от различни обекти на Statement. Всички методи за изпълнение в интерфейса на оператора имплицитно затварят текущия обект ResultSet на инструкция, ако съществува отворен.
Това, което прави нещата още по-лоши, е rs
от кода за повикване. Той също така се извлича извън statement
поле, но не е затворено.
В крайна сметка:имате няколко ResultSet
отнасящи се до същия Statement
обект едновременно отворен.