Salve, ho realizzato un semplice gestionale per edicole in Java, evoluzione di una precedente versione che lavorava su un ArrayList perdendo di conseguenza i dati chiudendo l'applicazione. Ora i dati sono salvati in un database tramite connettore JDBC.
Da vari test fatti il programma funziona perfettamente, tranne per un fatto: intervenendo sull'UPDATE delle copie vendute, l'operazione va in porto ma il catch intercetta una
java.sql.SQLException: Operation not allowed after ResultSet closed
Ho indagato un po' sul ResultSet ma senza trovare riscontri di quel messaggio. Pubblico di seguito in codice in questione (la parte relativa all'eccezione, le connessioni al db vengono aperte per inviare le query SQL e ricevere i dati e poi prontamente chiusi, pertanto non dovrebbero esserci influenze di altre parti del programma.
codice:
               String query = "SELECT cricevute, cvendute FROM quotidiani WHERE id='" + id + "'";                    
                try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    Connection conn = DriverManager.getConnection(url, "root", "");
                    Statement stmt = conn.createStatement();
                    ResultSet res = stmt.executeQuery(query);
                        
                    while (res.next()) {
                        int ricevute = res.getInt("cricevute");
                        int vendute = res.getInt("cvendute");
                        vendute++;


                        if (vendute < ricevute) {
                            result = stmt.executeUpdate("UPDATE quotidiani set cvendute='" + vendute + "' where id='" + id + "'");


                            if (result > 0) {
                                System.out.println("Copie vendute aggiornate correttamente");
                            } else {
                                System.out.println("Aggiornamento fallito");
                            }


                        } else {
                            System.out.println("Copie esaurite");
                        }


                    }
                    conn.close();
                }
                catch (SQLException e) {
                    System.out.println(e);
                }
Vorrei capire cosa genera l'eccezione, dopo la stampa della quale il programma prosegue indisturbato.