Il problema riguarda il modo in cui recuperi i dati in getStuff()
. Ogni volta che visiti getStuff()
ottieni un nuovo ResultSet
ma non lo chiudi
Ciò viola le aspettative della Statement
classe (vedi qui - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Per impostazione predefinita, è possibile aprire contemporaneamente un solo oggetto ResultSet per oggetto Statement. Pertanto, se la lettura di un oggetto ResultSet è intercalata con la lettura di un altro, ciascuno deve essere stato generato da diversi oggetti Statement. Tutti i metodi di esecuzione nell'interfaccia Statement chiudono implicitamente l'oggetto ResultSet corrente di un'istruzione se ne esiste uno aperto.
Ciò che rende le cose ancora peggiori è il rs
dal codice chiamante. È anche derivato dall'statement
campo ma non è chiuso.
In conclusione:hai diversi ResultSet
relativo alla stessa Statement
oggetto aperto contemporaneamente.