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

VB.NET Discussion :

Renvoyer un OleDbDataReader


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Par défaut Renvoyer un OleDbDataReader
    Bonsoir à tous =)

    Je suis toujours dans la finition de mes projets pour mon BTS, je me heurte à un p'tit probleme.
    J'ai réaliser un module qui va etre utiliser pour se connecter, fermer un base de données Access, mais aussi toute les actions comme les selects, les inserts, les deletes ...

    Le Insert fonctionne correctement, je me heurte cependant a un p'tit probleme avec mon Select. Je voudrais pouvoir obtenir le resultat du reader utilisé dans ma fonction dans mon programme principal sans avoir a redéclarer tout mes objets de relatifs a la connexion et l'exploitation de ma BDD.

    Mon module s'organise comme ça :

    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
     
        Dim MyConnexion As New System.Data.OleDb.OleDbConnection()
        Dim MyCommand As OleDbCommand = MyConnexion.CreateCommand()
        Dim MyReader As OleDbDataReader = MyCommand.ExecuteReader
     
        Public Sub ConnexionBDD(ByVal files_bdd As String)
            Try
                MyConnexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & files_bdd
                MyConnexion.Open()
            Catch ex As Exception
                MessageBox.Show("Impossible d'établir la connection à la base." & ex.Message)
            End Try
        End Sub
     
        'Select dans la base de données Access
        Public Function SelectBDD(ByVal QuerySQL As String)
            MyCommand.CommandText = QuerySQL
            Return MyReader
        End Function
    Je cherche depuis plusieurs minutes maintenant sans rien trouver réellement que je puisse comprendre ... Je fais donc appelle une nouvelle fois à vous

    Merci d'avance
    Bonne soirée (nuit)

    mrocks

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut
    Salut,

    Voilà à peu près la réponse telle que je la conçois suite à ce que j'ai compris à ton problème...

    C'est une fonction qui renvoie directement le DataReader...

    J'espère que c'est bien ce que tu voulais

    A+

    toumou6


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Public Shared Function SelectBDD( _
            ByVal PARAM_SQLCXN_connexionActuelle As OleDbConnection, _
            ByVal PARAM_STR_requeteSQL As String) _
            As OleDbDataReader
     
            '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            '"" La fonction prend en paramètre une connexion (ouverte)
            '"" et la requête SQL (en format String)
            '"" elle exécute la reqûête, 'stocke' le résultat dans un 
            '"" OleDbDataReader et le renvoie
            '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     
            '"" on commence par tester l'état de la connexion
            If PARAM_SQLCXN_connexionActuelle.State = ConnectionState.Open _ Then
     
                '"" on déclare une nouvelle commande
                Dim MyCommand As OleDbCommand = New OleDbCommand
     
                '"" on défini les paramètres de la commande
                MyCommand.Connection = PARAM_SQLCXN_connexionActuelle
                MyCommand.CommandText = PARAM_STR_requeteSQL
     
                Try
                    '"" on déclare le Reader
                    Dim ODBDR_retour As OleDbDataReader
     
                    '"" on exécute 
                    ODBDR_retour = MyCommand.ExecuteReader()
     
                    '"" on retourne le Reader
                    Return ODBDR_retour
     
                Catch ex As Exception
     
                    '"" si l'execution de la requête plante
                    MsgBox("Problème de requête")
                    Return Nothing
     
                End Try
     
            Else
     
                '"" si la connexion est fermée
                '"" (il n'y a pas de raison, mais on ne sait jamais)
                MsgBox("Connexion fermée")
                Return Nothing
     
            End If
     
        End Function

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut Retourner un DataReader... rectification
    Salut mrocks,

    Je viens de relire tes lignes de code et je crois bien que je me suis un peu trompé

    en fait étant donné que ta commande, ta connexion et ton reader sont des variables globales à ta classe, tu n'as pas à déclarer ta commande au sein de ta fonction SelectBDD. Par contre, je te conseil de ne pas exécuter ton Command.ExecuteReader lors de la déclaration de ton Reader.

    voilà plutôt ce que je te propose :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
        Dim MyConnexion As New System.Data.OleDb.OleDbConnection()
        Dim MyCommand As OleDbCommand = MyConnexion.CreateCommand()
        Dim MyReader As OleDbDataReader
     
    Public Shared Function SelectBDD( _
            ByVal PARAM_STR_requeteSQL As String) _
            As OleDbDataReader
     
            '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            '"" La fonction prend en paramètre  la requête SQL
            '"" (en format String) elle exécute la reqûête, 'stocke'
            '"" le résultat dans un  OleDbDataReader et le renvoie
            '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     
            '"" on commence par tester l'état de la connexion (ouverte ou pas)
            If MyConnexion.State = ConnectionState.Open Then
                '"" si la connexion est ouverte
     
                '"" on défini les paramètres de la commande
                MyCommand.Connection = MyConnexion
                MyCommand.CommandText = PARAM_STR_requeteSQL
     
                Try
                    '"" on déclare un Reader
                    Dim ODBDR_retour As OleDbDataReader
     
                    '"" on exécute la requête
                    ODBDR_retour = MyCommand.ExecuteReader()
     
                    '"" on retourne le Reader
                    Return ODBDR_retour
     
                Catch ex As Exception
     
                    '"" si l'execution de la requête plante
                    MsgBox("Problème de requête")
                    Return Nothing
     
                End Try
     
            Else
     
                '"" si la connexion est fermée
                '"" (il n'y a pas de raison, mais on ne sait jamais)
                MsgBox("Connexion fermée")
                Return Nothing
     
            End If
     
        End Function
    voilà...

    Et après tu utilises la fonction pour remplir ton Reader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyReader = Nom_de_ma_classe.SelectBDD("SELECT * FROM Utilisateur")
    Bon... j'espère que ce sera mieux

    A bientôt

    toumou6

  4. #4
    Membre expérimenté
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Par défaut
    le plus simple/cohérent reste quand meme de ne renvoyer à partir de ton module que des objects déconnectés, comme un dataset, plutot qu'un datareader.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut ...
    euh... petite question stupide... c'est quoi la différebce entre un DataSet et un DataReader (mis à part qu'il ne s'utilisent pas de la même façon )

  6. #6
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    La différence fondamentale est au niveau du mode de connexion l'un est en connecté c-a-d que pour chaque lecteur d'une ligne le datareader ce connecte a la BD tandis qu'avec le Dataset un clone des données a lire est directement créer au niveau de l'application et pour la lecture de chaque ligne plus besoin de connexion a la BD et la l'on est en mode déconnecte.
    C'est un peu sa la différence je crois .
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/10/2003, 17h17
  2. Delphi7 winxp pro renvoyer un TLabel connu par nom
    Par regis1_1 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/06/2003, 11h09
  3. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48
  4. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33
  5. fonction renvoyant un tableau en argument
    Par Jones dans le forum Langage
    Réponses: 6
    Dernier message: 30/09/2002, 18h20

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