Mysql
 sql >> Database >  >> RDS >> Mysql

Ottenere java.sql.SQLException:operazione non consentita dopo la chiusura di ResultSet

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.