Problème :
Une exception, "java.sql.SQLException : opération non autorisé après la fermeture de ResultSet", se produit lors de la fermeture d'une connexion à une base de données MySQL, indiquant un problème avec la gestion de ResultSet après la fin de la connexion.
Extrait de code :
<code class="java">public static ResultSet sqlquery(String query) { ResultSet rs = null; Connection connection = null; Statement st = null; try { // Establish connection and execute query } finally { // Attempt to close connection and ResultSet objects } return rs; }</code>
Explication :
JDBC ne récupère pas immédiatement tous les résultats de la requête dans ResultSet. Au lieu de cela, il fournit un objet qui facilite la récupération des résultats. Cependant, cet objet devient invalide à la fermeture de la connexion.
Solution :
Pour éviter ce problème, le code doit créer un objet pour stocker les résultats de la requête avant de fermer la connexion. . Cela implique l'utilisation d'un RowMapper pour mapper les lignes ResultSet aux objets et remplir une collection qui est renvoyée comme résultat de la méthode.
Code résolu :
<code class="java">public static <T> List<T> sqlquery(String query, RowMapper<T> rowMapper) { Connection connection = null; Statement st = null; ResultSet rs = null; try { // Establish connection and execute query } finally { // Handle possible exceptions gracefully } while (rs.next()) { list.add(rowMapper.mapRow(rs)); } return list; }</code>
Notes supplémentaires :
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!