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 :

Fonction types différents


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut Fonction types différents
    bonjour,

    voilà je ne sais pas comment m'y prendre (ni si c'est possible) mais j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #If SGBD = "Access" Then
                    Dim command As New OleDb.OleDbCommand(select * ..)
                    Dim reader As OleDb.OleDbDataReader
    #ElseIf SGBD = "SQL" Then
                    Dim command As New SqlClient.SqlCommand
                    Dim reader As SqlClient.SqlDataReader
    #End If
    il permet de déclarer 2 objets utilisés de la même manière par la suite mais de type différent.

    La fonction que je souhaite réaliser prendrait en argument : SGBD, command et reader et ferait le test... le problème est au niveau du type de parametre à utiliser (si SGBD = Access, il faudra un type oledb, sinon sqlclient...)...

    est-il possible de réaliser une telle fonction? (ou une autre facon de faire...)
    j'espère avoir été clair

    merci

  2. #2
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Pour ce faire passe par une méthode generic c'est à cela que cela sert.

    MSDN pour des exemples : ici

  3. #3
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Hmm...

    regarde plutôt ici, c'est exactement ce pour quoi ils ont enrichi System.Data.Common en 2.0 :
    http://johannblais.developpez.com/tu...-donnees/#LIII

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    en résumé : déclare tes variables avec les types abstraits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim command as System.Data.Common.DbCommand
    Dim reader as System.Data.Common.DbDataReader
    #If SGBD = "Access" Then
                    command = New OleDb.OleDbCommand(select * ..)
                    reader = OleDb.OleDbDataReader
    #ElseIf SGBD = "SQL" Then
                    command = New SqlClient.SqlCommand
                    reader = SqlClient.SqlDataReader
    #End If
    Mais normalement tu n'as jamais besoin de mentionner explicitement le type, lit l'article indiqué par pvialatte, il explique très bien la marche à suivre

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    salut,

    j'ai lu l'article et je pense qu'il me faut donc utiliser un "IDataReader", je passe ma requete en parametre et je retourne un IDataReader mais apres c'est un peu flou pour moi

    si je veux utiliser une code générique je devrais utiliser mon reader de type IdataReader et jamais faire de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reader = OleDb.OleDbDataReader
    c'est bien ca?

    ensuite je pourrais utiliser la méthode .Read() sur mon reader de type IDataReader ?


  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu peux utiliser IDataReader ou DbDataReader et appeler dessus la méthode Read.
    En suivant le tuto (partie III) tu peux écrire un code entièrement générique, sans jamais avoir à mentionner le provider ADO.NET que tu utilises, sauf lors de l'appel à DbProviderFactories.GetFactory (et encore, tu peux mettre le nom du provider dans un fichier de configuration...)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    J'ai réussi à faire un code qui fonctionne comme je veux

    Merci bien

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

Discussions similaires

  1. Créer une fonction pouvant renvoyer 2 types différents
    Par Simara1170 dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2014, 15h42
  2. [JTable] Colonnes de types différents
    Par gondek dans le forum Composants
    Réponses: 3
    Dernier message: 20/10/2005, 01h07
  3. Tableau d'objets de type différents
    Par Hell dans le forum C++
    Réponses: 9
    Dernier message: 11/01/2005, 23h57
  4. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 23h28
  5. Réponses: 2
    Dernier message: 07/10/2004, 18h00

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