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 :

Créer une liste contenant plusieurs strings [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut Créer une liste contenant plusieurs strings
    Bonjour à tous,

    J'ai une question triviale mais je ne trouve pas de solution "propre".

    J’exécute une requête sur ma BDD via un sqlcommand. Suite à cela j'exécuté un dataReader qui contient 3 string. Voici le code pour être plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim dReader As System.Data.SqlClient.SqlDataReader
    dReader = maCommande.ExecuteReader()
     
    Do While dReader.Read()
         'Ici, je voudrais récupérer dans une liste les valeurs de :
         dReader.GetValue(0).ToString(), dReader.GetValue(1).ToString() et dReader.GetValue(2).ToString()
    Loop
    Je souhaiterai avec une sorte de List(Of String, String, String). J'ai pensé à faire une tableau de string mais je ne sais pas si c'est le meilleur moyen.

    J'espère que mes explications sont assez claires

    Merci !

    Jah

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il faut penser à la classe Tuple.

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim result = new List(Of Tuple(Of String, String, String))  
    Dim dReader As System.Data.SqlClient.SqlDataReader
    dReader = maCommande.ExecuteReader()
     
    Do While dReader.Read()
         'Pense quand même à vérifier que chaque colonne ne contient pas null. Si tel est le cas le code suivant généra NullReferenceException.
         result.Add(Tuple.Create(dReader.GetValue(0).ToString(), dReader.GetValue(1).ToString(), dReader.GetValue(2).ToString())
    Loop

  3. #3
    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
    Par défaut
    Ce qu'il faudrait surtout c'est savoir à quoi correspondent les données que tu récupères.

    Par exemple, en supposant que ce sont des personnes, tu peux créer une classe Person, avec des propriétés Nom, Prénom, etc. Pour chaque ligne de ton DataReader, tu creés un objet Person que tu remplis avec les valeurs du DataReader, et tu l'ajoutes à une liste de Person

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim dReader As System.Data.SqlClient.SqlDataReader
    Dim persons As New List(Of Person)
    dReader = maCommande.ExecuteReader()
     
    Do While dReader.Read()
          Dim p As New Person
          With p
              .Nom = dReader.GetValue(0).ToString()
              .Prenom = dReader.GetValue(0).ToString()
              ' etc
          End With
          persons.Add(p)
    Loop

  4. #4
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Bonjour,

    Merci pour vos réponses


    @h2s84: Je ne connaissais pas les tuples, je cherche des indices performances sur le internet mais je ne trouve rien.
    Pour mon cas, cela va m'être utile !


    @tomlev: J'ai pensé à faire une classe mais je n'ai aucune idée des ressources que ca prend de créer des classes en boucle. Aurais-tu un article ou une explication sur la chose ?

    Deuxième question; Dans le cas que tu présentes, où est-ce que tu places le code de Person ? Tu crées un fichier .vb avec juste la classe dedans ?


    Encore merci pour votre aide

  5. #5
    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
    Par défaut
    Citation Envoyé par Jah73 Voir le message
    @h2s84: Je ne connaissais pas les tuples, je cherche des indices performances sur le internet mais je ne trouve rien.
    L'utilisation de Tuple ne pose pas de problèmes de performance particuliers.

    De toutes façons, se poser cette question à ce stade, c'est clairement de l'optimisation prématurée... Commence par faire quelque chose qui marche, tu te poseras la question des performances plus tard si ça te semble trop lent. Mais ça m'étonnerait que l'utilisation de Tuple (ou d'une classe spécifique) change grand chose à tes performances...

    Citation Envoyé par Jah73 Voir le message
    @tomlev: J'ai pensé à faire une classe mais je n'ai aucune idée des ressources que ca prend de créer des classes en boucle. Aurais-tu un article ou une explication sur la chose ?
    Je n'ai pas d'article spécialement là dessus, mais créer une instance d'une classe toute simple comme celle là, ça ne prend pas grand chose comme ressources.

    Citation Envoyé par Jah73 Voir le message
    Deuxième question; Dans le cas que tu présentes, où est-ce que tu places le code de Person ? Tu crées un fichier .vb avec juste la classe dedans ?
    Oui par exemple. Il n'y a pas vraiment de contrainte, mais en pratique on met généralement une classe par fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Désolé pour ma réponse tardive..

    Merci Tomlev pour tes réponses

    Pour l'optimisation, je cherche juste à me renseigner comme je suis débutant, tout est bon à prendre

    Merci à tous !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/06/2014, 12h14
  2. Réponses: 6
    Dernier message: 23/11/2012, 23h26
  3. Réponses: 1
    Dernier message: 05/11/2008, 17h30
  4. Réponses: 5
    Dernier message: 16/05/2007, 17h53
  5. Réponses: 3
    Dernier message: 17/08/2006, 11h30

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