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 :

[C#]Recuperer la structure d'une table dans un DataSet


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut [C#]Recuperer la structure d'une table dans un DataSet
    Bonjour,

    comment est-il possible de récuperer la structure d'une table dans un dataset sans lancer une commande sql SELECT ? (quelle autre commande lancer ?)

    je désire recuperer la structure d'une table dans un dataset ,
    puis utiliser des rows.add pour y ajouter des lignes .

    Merci pour votre aide

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Il y a deux methodes mais qui font appel a un SELECT quoiqu'il arrrive

    1) tu peux utiliser le dataAdapter adequat (en fonction de la base de donne a laquelle tu accedes) avec sa methode .Fillschema qui renvoie la description des champs dans une datatable (ou plusieurs)
    Tu peux faire un select qui ne retourne pas de champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void GetMyRecords() {
       // ...
       //ici la creation de la connection, de la commande du dataadapter
       // ...
       DataTable[] myTableArray = myDataAdapter.FillSchema(myDataSet,SchemaType.Mapped,"Categories");
    }
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommondbdataadapterclassfillschematopic.asp
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommondbdataadapterclassfillschematopic3.asp

    2) la tout depend du serveur: tu peux faire un select dans les tables systeme pour recuperer les noms de tables et champs

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Piotrek
    Il y a deux methodes mais qui font appel a un SELECT quoiqu'il arrrive

    1) tu peux utiliser le dataAdapter adequat (en fonction de la base de donne a laquelle tu accedes) avec sa methode .Fillschema qui renvoie la description des champs dans une datatable (ou plusieurs)
    Tu peux faire un select qui ne retourne pas de champs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void GetMyRecords() {
       // ...
       //ici la creation de la connection, de la commande du dataadapter
       // ...
       DataTable[] myTableArray = myDataAdapter.FillSchema(myDataSet,SchemaType.Mapped,"Categories");
    }
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommondbdataadapterclassfillschematopic.asp
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommondbdataadapterclassfillschematopic3.asp

    2) la tout depend du serveur: tu peux faire un select dans les tables systeme pour recuperer les noms de tables et champs
    LA deuxième méthode n'est-elle pas plus lourde ? Elle oblige de faire un SELECT sur les tables systems (sysobjects sur SQL Server) pour trouver les tables utilisateurs, et ensuite, d'autre requetes pour récupérer la structure :

    JE demande cela car c'est une question que je me suis déjà posée et je cherchais le meilleur moyen de le faire.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par morpheus
    LA deuxième méthode n'est-elle pas plus lourde ?
    Bah si. Plein de requêtes et de traitement pour refaire ce que le DataAdapter fait très bien tout seul du moment qu'on lui fournit les champs qu'on veut.

    L'un des intérêts de .NET c'est quand même d'utiliser le framework pour se simplifier la vie, pas pour se prendre la tête à réinventer une roue qui tourne plus lentement et est pas mal cabossée...
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    C'était une question rhétorique mais merci de la réponse

  6. #6
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    les deux methodes ont leurs avantages

    - un simple select dans les tables systeme est + rapide et plus souple (datareader, dataset selon le besoin)

    - dataadapter est plus lourd mais permet de recuperer des infos sur la nature des champs la ou il n'existe pas de table systeme a interroger: excel par ex pour les noms de colonnes

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    merci à tous pour ces solutions que je vais explorer.

    je m'étais dit ...cette nuit... est-ce qu'un simple accès classique aux données de la forme (message de piotrek)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM matable
    WHERE cle = 0 and cle <> 0;
    c'est peut paraitre un peu tordu, mais le résultat est là; cela permet peut-être d'éviter l'accès aux données système


    Merci encore

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par patdez
    c'est peut paraitre un peu tordu, mais le résultat est là; cela permet peut-être d'éviter l'accès aux données système
    Tordu et inutile. FillSchema ne renvoit aucune ligne, y a pas besoin de critère de recherche, et c'est fait justement pour ça.

    Y a vraiment *aucun* intérêt à chercher autre chose pour récupérer le schéma d'une table :)
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

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

Discussions similaires

  1. Recuperer le contenu d'une table dans une jComboBox
    Par Migraine dans le forum NetBeans
    Réponses: 2
    Dernier message: 04/09/2009, 11h31
  2. expression pour filtrer une table dans ma dataset
    Par beet2che dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/09/2008, 22h18
  3. Réponses: 4
    Dernier message: 18/08/2008, 14h05
  4. longueur d'une table dans un DataSet
    Par SirTurbo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/09/2007, 00h38
  5. [SQL] recuperer la structure d'une table
    Par taka10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/06/2006, 11h17

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