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 :

[VB.NET] SqlDataReader et connection


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut [VB.NET] SqlDataReader et connection
    bonjour à tous

    petite question facile pour vous je suppose

    j'ai une fonction qui me retourne un sqldatareader apres avoir executer une procedure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function ExecuteReader() As SqlDataReader
     
            Dim retour As SqlDataReader
     
            retour = Me.ACommande.ExecuteReader()
            Return retour
     
    End Function
    la classe concernée gère aussi la connexion à la base (donc j'ai une connexion par objet)

    j'appelle ma fonction une première fois, pour remplir un datagrid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    toto = obj_conn.ExecuteReader()
    ...
    toto.close()
    Mon problème c'est que si j'appelle ma fonction une deuixème fois, j'ai le droit à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reader déjà ouvert pour cette connexion (qqchose comme ça)
    Au premier abord j'aurais tendance à dire qu'il faut que j'instancie une nouvelle fois ma classe de connexion (pour avoir une deuxième connexion cqfd). Mais je voudrais être sûre que le problème ne vient pas du fait que le :

    n'a pas d'effet, étant donné que toto est le retour d'une fonction ?

    Merci d'avance



    [Tag [ASPX][VB.NET] ajouté par freegreg]

  2. #2
    Expert éminent
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Points : 9 634
    Points
    9 634
    Par défaut
    Salut et bienvenue.

    Tu es en Webform ou en Winform?

    Didier Danse

    Most Valuable Profesionnal SharePoint
    Microsoft Certified Application Developer
    Mes articles sur developpez.com
    Mon site perso


  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    merci

    webform

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Bonjour,
    pour une connexion donnée seul un DataReader peut être ouvert, c'est une règle imposée par ADO.NET...
    Je vois 2 solutions à ton problème :
    1) avant d'appeler une deuxième fois ta fonction, ferme le premier DataReader
    2) utilise le pool de connexions : crée autant de connexions que nécessaire.

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    tout d'abord merci pour ta réponse

    pour le pool de connexion c'est ce que j'ai choisi de faire, mais de toutes facons j'aimerais qd même que mes reader soient fermés (c'est qd même plus propre). D'où ma question de savoir si en faisiant

    toto.close()

    je ferme bien le reader qui m'a été retournée par fonction. En gros j'ai peur que toto soit une copie (pas une référence) et donc que le reader initialisé dans la fonction ne soit pas fermé (désolée si je suis pas claire )

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 56
    Points : 64
    Points
    64
    Par défaut
    Etant donné que SqlDataReader n'hérite pas de ValueType, ta fonction retourne effectivement une référence. Donc ton toto.close() va marcher

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    merci beaucoup (je dormirai mieux cette nuit )

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

Discussions similaires

  1. [VB.net] Problème de connection à ma base MySQL
    Par WriteLN dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/01/2008, 17h14
  2. [ADO.Net][VB.NET]Comment se connecter à une base MySql ?
    Par Abdel58 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 15/03/2006, 17h37
  3. Réponses: 1
    Dernier message: 30/12/2005, 17h45
  4. [VB.Net] Problème de connection à une BDD
    Par Catalan dans le forum ASP.NET
    Réponses: 22
    Dernier message: 03/10/2005, 15h29
  5. [ADO.NET] Erreur de connection à une DB SQL
    Par BilTCD dans le forum ASP
    Réponses: 4
    Dernier message: 10/08/2005, 15h11

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