Problem dotyczy sposobu pobierania danych w getStuff()
. Za każdym razem, gdy odwiedzasz getStuff()
otrzymujesz nowy ResultSet
ale nie zamykasz tego.
To narusza oczekiwania Statement
klasa (patrz tutaj - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Domyślnie w tym samym czasie może być otwarty tylko jeden obiekt ResultSet na obiekt Statement. Dlatego też, jeśli odczyt jednego obiektu ResultSet jest przeplatany odczytem innego, każdy musi być wygenerowany przez inny obiekt Statement. Wszystkie metody wykonania w interfejsie Statement domyślnie zamykają bieżący obiekt ResultSet instrukcji, jeśli istnieje otwarty.
Co jeszcze gorzej, to rs
z kodu wywołującego. Jest również pochodną statement
pole, ale nie jest zamknięte.
Konkluzja:masz kilka ResultSet
odnoszące się do tego samego Statement
obiekt jednocześnie otwarty.