Fermeture du ResultSet avant de réutiliser la connexion à l'instruction
Dans la programmation de base de données Java, on rencontre parfois une exception qui survient lors de l'utilisation d'une instruction préparée après la fermeture le ResultSet. Cette exception, « Opération non autorisée après la fermeture de ResultSet », se produit spécifiquement lorsque le même objet de connexion est utilisé.
Dans l'extrait de code donné, une nouvelle instruction préparée est créée à l'aide du même objet de connexion après la fermeture des ResultSets existants. (rs et rs2). Cela soulève l'exception. Pour résoudre ce problème et réutiliser la connexion à l'instruction, il est recommandé de s'assurer d'abord que tous les ResultSets précédents associés à l'instruction sont fermés.
Une approche recommandée consiste à utiliser un bloc try-with-resources, qui ferme automatiquement les ResultSets. et déclarations. Voici un exemple :
try ( Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery("SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;") ) { if (rs.next()) { // Process the results } try ( ResultSet rs2 = statement.executeQuery("SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";") ) { String updateSql = "INSERT INTO `blah` ..."; PreparedStatement pst = (PreparedStatement) connection.prepareStatement(updateSql); while (rs2.next()) { // ... } pst.executeBatch(); } } catch (SQLException e) { e.printStackTrace(); }
Dans cet exemple, rs et rs2 sont fermés dans leurs blocs try respectifs avant de tenter d'utiliser l'instruction pour préparer un nouveau lot. Cela garantit qu'il n'y a pas de ResultSets ouverts avant d'exécuter l'instruction préparée.
N'oubliez pas que le maintien des objets ResultSet actifs est crucial pour une interaction correcte avec la base de données. Donnez toujours la priorité à la gestion et au nettoyage appropriés des ressources pour éviter les exceptions et garantir l'intégrité des données.
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!