"SQLException : opération non autorisée après la fermeture de ResultSet" - Dépannage et solutions
Rencontre de "java.sql.SQLException : opération non autorisée après la fermeture de ResultSet" indique généralement un problème de gestion des ResultSets dans votre code Java. Pour résoudre ce problème, examinons le scénario présenté dans la question.
L'extrait de code fourni implique l'exécution de plusieurs requêtes dans un bloc try-catch. Cela commence par utiliser un objet Statement pour récupérer les données de la table "user", suivi par une interrogation de la table "profils" pour préparer une opération par lots à l'aide d'un objet PreparedStatement.
Le problème survient au sein de la méthode getStuff() , où un ResultSet est obtenu sans être fermé, violant le comportement par défaut de Statement. En ouvrant plusieurs ResultSets simultanément à partir du même objet Statement, le code viole l'attente selon laquelle un seul ResultSet peut être ouvert à la fois.
Pour remédier à ce problème, il est crucial de s'assurer que les ResultSets sont explicitement fermés lorsqu'ils sont ouverts. ne sont plus nécessaires. Pour le code en question, cela signifie ajouter un appel à rs.close() après avoir récupéré les données dans les objets ResultSet (rs et rs2) et dans la méthode getStuff().
De plus, il convient de noter que même si Les connexions à la base de données sont conçues pour être réutilisables, il est généralement recommandé de créer de nouveaux objets Statement pour chaque requête afin de maintenir des performances optimales. Ceci est particulièrement important lorsqu'il s'agit d'opérations par lots, car cela garantit que toutes les requêtes sont exécutées à l'aide de la même instruction.
En suivant ces recommandations, vous pouvez résoudre avec succès l'exception « Opération non autorisée après la fermeture de ResultSet » et garantir gestion appropriée des ResultSets dans votre code Java.
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!