Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi est-ce que j'obtiens \'java.sql.SQLException : opération non autorisée après la fermeture de ResultSet\' lors de la fermeture de ma connexion MySQL en Java ?

Mary-Kate Olsen
Libérer: 2024-10-31 11:03:29
original
740 Les gens l'ont consulté

Why am I getting

Problème de fermeture de la connexion MySQL en Java

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>
Copier après la connexion

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>
Copier après la connexion

Notes supplémentaires :

  • L'utilisation d'un RowMapper rend le code plus réutilisable et polyvalent pour gérer différents types de données.
  • Envisagez de paramétrer les requêtes pour empêcher les attaques par injection SQL.
  • Spring-jdbc fournit une solution robuste pour gérer les opérations JDBC sans effort.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!