IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

DataReader et fermeture Connection


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut DataReader et fermeture Connection
    Contexte : C#, ASPNET, SQL Serveur , développement en couche

    Bonjour,
    j'ai la fonction suivante dans ma couche DAO (Accès aux données) qui me renvois un dataReader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
          /// <summary>
            /// Renvois d'un DataReader
            /// </summary>
            /// <param name="SQL">Chaîne SQL</param>
            /// <returns>DataReader</returns>
            public IDataReader RenvoisDataReader(string SQL)
            {
     
                SqlCommand cd = new SqlCommand();
                IDataReader dr;
     
                cd.Connection = (SqlConnection)OuvrirConnexionSqlServeur();
                cd.CommandType = CommandType.Text;
                cd.CommandText = SQL;
     
                try
                {
                    dr = cd.ExecuteReader();
                    return dr;
                }
                catch (Exception err)
                {
                    throw err;
                }
                finally
                {
                 }


    Je voudrai mettre dans mon finally un appel à la fonction qui ferme la connection à la base mais quand je fais cela j'ai une erreur :


    Invalid attempt to call Read when reader is closed.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: Invalid attempt to call Read when reader is closed.
    Si je ne ferme pas ma connection , au bout d'un certain temps j'ai l'erreur :

    Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached

    A votre avis , comment je dois m'y prendre pour fermer ma connection après chaque appel à ma base ?

    Merci pour vos réponses ...


    P.JEAN

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Perso, je retourne jamais de DataReader

  3. #3
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut ...
    j'ai trois couches :


    DAO qui accède à la base via ADONET et qui renvois des DataReader , des Dataset ou qui execute des requêtes.

    DAL qui accède à la couche DAO en lui passant des REQUETES SQL et qui renvois des objets à la couche BLL


    Au lieu de DataReader je pourrai utiliser des DataSet mais quand j'ai besoin d'une seule ligne en lecture seule cela me semble mieux d'utiliser un DataReader

    P.JEAN

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu peux retourner des DataRow aussi
    Ou des business entities que tu remplis à partir du DataReader (ce que je fais dans la mesure du possible)

  5. #5
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut DataTable
    Si je conprend bien dans ma couche DAO
    je creer une DataTable ...je le remplis avec mon dataReader , je ferme ma connection ....et je renvois ma dataTable à ma couche DAL ...

    Je vais tester ça ..

    Merci

  6. #6
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut Ayé
    j'ai résolu mon problème :

    J'interroge ma base avec un datareader mais je transmet une dateTable ...ce qui me permet de fermer ma connection de suite ...

    Merci LuteceFalco ...

    Patrick

  7. #7
    CUCARACHA
    Invité(e)
    Par défaut
    Salut,

    Essaye d'utiliser ta connexion dans un using

    (Perso, lorsque j'utilise l'ADO, je ne passe que par des datareaders).

    Pas beaucoup de temps ce matin pour détailler

    ++

    Laurent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert ftp - fermeture connection
    Par koktel_dfr dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/05/2008, 20h41
  2. Fermeture connection et persistance ResultSet
    Par axel119 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/10/2007, 21h17
  3. [POO] Fermeture d'une connection SQL
    Par Anduriel dans le forum Langage
    Réponses: 2
    Dernier message: 27/08/2006, 19h17
  4. Réponses: 2
    Dernier message: 26/07/2006, 13h28
  5. Réponses: 6
    Dernier message: 28/04/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo