En règle générale, en Java, quand un objet est hors de portée, il est automatiquement garbage collector, mais la spécification Java ne place pas toutes les exigences spécifiques de la JVM sur le moment (ou même si) cela se produira pour un objet particulier. Par conséquent, ne comptez pas sur finaliseurs (finally) de fermer vos curseurs.
Explicitement ferment tous les curseurs à l'aide soit par ResultSet.close (), Statement.close (), et / ou PreparedStatement.close () lorsque vous n'avez plus besoin du curseur. Cela garantit que les curseurs côté serveur correspondant sont fermées, empêchant l'ORA-1000 erreur. N'oubliez pas de fermer ces objets JDBC dans le cadre qu'ils ont été créés. La fermeture de ces objets dans un bloc {} enfin est toutefois recommandé, ne comptez pas sur une méthode finally (), car une méthode finally () n'est jamais garanti à courir par la JVM!
Une erreur fréquente survient lorsque CallableStatement est utilisée pour appeler une procédure PL / SQL qui retourne un REF CURSOR. Si vous ne fermez pas l'objet correspondant ResultSet, un curseur sera laissé ouvert sur le serveur.
Partager