Maison > base de données > tutoriel mysql > Comment puis-je gérer en toute sécurité les ResultSets en Java pour éviter une fermeture prématurée ?

Comment puis-je gérer en toute sécurité les ResultSets en Java pour éviter une fermeture prématurée ?

DDD
Libérer: 2024-11-27 12:19:11
original
781 Les gens l'ont consulté

How Can I Safely Handle ResultSets in Java to Avoid Premature Closure?

Renvoyer un ResultSet en Java

L'accès à une table de base de données implique souvent la récupération d'un ensemble de résultats contenant plusieurs lignes de données. Traditionnellement, ces ensembles de résultats étaient renvoyés puis itérés pour extraire des lignes individuelles. Cependant, cette approche présente des problèmes potentiels.

Le problème de la fermeture des ensembles de résultats

L'un des défis de la gestion des ensembles de résultats est leur fermeture inhérente. Une fois qu'un jeu de résultats est fermé, son instruction et sa connexion associées sont également fermées, le rendant inaccessible pour d'autres opérations. Cela peut conduire à l'erreur dite « Opération non autorisée après la fermeture de ResultSet ».

Une solution : mappage aux collections

Pour éviter ces problèmes, il est conseillé s'abstenir de renvoyer des ensembles de résultats bruts dans les méthodes publiques. Envisagez plutôt de mapper le jeu de résultats sur une collection de JavaBeans et de renvoyer cette collection à la place. Cela maintient l'instruction et la connexion ouvertes jusqu'à ce que la collection ne soit plus nécessaire, évitant ainsi une fermeture prématurée.

Voici un exemple de la façon dont cela pourrait être implémenté :

public List<Biler> list() throws SQLException {
    // Initialize connection, statement, and result set
    Connection connection = ...
    PreparedStatement statement = ...
    ResultSet resultSet = ...

    List<Biler> bilers = new ArrayList<>();

    // Iterate over the result set and map rows to JavaBeans
    while (resultSet.next()) {
        Biler biler = new Biler();
        // Set properties of the JavaBean from the result set
        ...
        bilers.add(biler);
    }

    return bilers;
}
Copier après la connexion

Dans le code ci-dessus, le La méthode list() renvoie une liste d'objets JavaBean, chacun représentant une ligne dans la table de la base de données. Cette approche garantit que la connexion et la déclaration restent ouvertes jusqu'à ce que la collection renvoyée ne soit plus nécessaire, éliminant ainsi le risque de fermeture prématurée.

Utilisation de Try-with-Resources

Java 7 a introduit l'instruction try-with-resources, qui simplifie la gestion des ressources qui doivent être fermées. Dans l'extrait de code ci-dessous, la connexion, l'instruction et l'ensemble de résultats sont automatiquement fermés à la fin du bloc try :

public List<Biler> list() throws SQLException {
    try (
        Connection connection = ...
        PreparedStatement statement = ...
        ResultSet resultSet = ...
    ) {
        // Iterate over the result set and map rows to JavaBeans
        ...
    }

    return bilers;
}
Copier après la connexion

En employant ces techniques, vous pouvez gérer en toute sécurité et efficacement les ensembles de résultats dans votre Java. code, garantissant que les ressources de la base de données sont gérées correctement et évitant les exceptions potentielles.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal