Problemet er den måde, du henter data på i getStuff() . Hver gang du besøger getStuff() du får et nyt ResultSet men du lukker den ikke.
Dette overtræder forventningen til Statement klasse (se her - https://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Som standard kan kun ét ResultSet-objekt pr. Statement-objekt være åbent på samme tid. Derfor, hvis læsningen af et ResultSet-objekt er sammenflettet med læsningen af et andet, skal hver af dem være genereret af forskellige Statement-objekter. Alle udførelsesmetoder i Statement-grænsefladen lukker implicit et udsagns aktuelle ResultSet-objekt, hvis der findes et åbent.
Det, der gør tingene endnu værre, er rs fra opkaldskoden. Det er også afledt af Statement felt, men det er ikke lukket.
Nederste linje:du har flere ResultSet der vedrører den samme Statement objektet åbnes samtidigt.