Opération non autorisée après la fermeture de MySQL Result Set
Lors de l'interaction avec une base de données à l'aide de JDBC, il est crucial de gérer les objets ResultSet avec soin pour évitez les exceptions telles que « Opération non autorisée après la fermeture de ResultSet ». Cette erreur se produit lorsque vous tentez d'effectuer des opérations sur un ResultSet qui a déjà été fermé.
Comprendre l'exception
L'exception est levée lorsque vous essayez de parcourir un ResultSet utilisant sa méthode next() après sa fermeture. Cela se produit parce que la fermeture d'un ResultSet libère ses ressources, y compris son curseur interne, le rendant invalide pour d'autres opérations.
Causes des ensembles de résultats fermés
Solution dans le code fourni
L'erreur dans le code fourni se produit dans la classe MySQLDonation lors du parcours de la table des dons . Le ResultSet obtenu à partir de la requête SELECT est fermé lorsque l'instruction est réexécutée pour les requêtes DELETE suivantes.
Pour résoudre ce problème, séparez les étapes d'exécution de la requête et de traitement des résultats :
// In MySQLDatabase class private void handleDonation(Client client, int creditamount) { try (Statement statement = getConnection().createStatement()) { // Execute DELETE query with new Statement statement.executeUpdate(String.format("DELETE ...")); } }
En créant une nouvelle instruction pour chaque requête, vous vous assurez que le ResultSet reste ouvert jusqu'à ce que la requête soit terminée.
Supplémentaire Notes
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!