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 :

Récupérer clé primaire dans un dataset


Sujet :

ASP.NET

  1. #1
    Membre du Club Avatar de Agoye
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 68
    Points
    68
    Par défaut Récupérer clé primaire dans un dataset
    Bonjour,

    Je suis en train d'écrire une moulinette de mise à jour de base.
    En gros je fais un select dans une table de ma base source, je vérifie la présence de la ligne dans la base cible et je fais soit un update, soit un insert.

    Mon pb, je ne veux faire une fonction générique (pas besoin de connaitre le nom / type des colonnes) pour faire ce travail.

    Est-il possible à partir d'un dataset de savoir si une colonne est une clé primaire?

    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonsoir

    Tu as les informations sur la clef primaire de chaque table du DataSet, dans la propriété PrimaryKey de chaque objet DataTable du DataSet.

    La propriété PrimaryKey est un tableau de DataColumn.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre du Club Avatar de Agoye
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Merci pour ta réponse, mais y a t il une astuce pour que cette propriété (primary key) soit renseignée à partir d'une requete en base (select * from table)?

    Car cette propriété est toujours vide dans mon cas...

    Merci d'avance

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Agoye Voir le message
    Bonjour,

    Merci pour ta réponse, mais y a t il une astuce pour que cette propriété (primary key) soit renseignée à partir d'une requete en base (select * from table)?

    Car cette propriété est toujours vide dans mon cas...

    Tu remplis ton dataset comment ? via un adapter ?

    A vrai dire, je ne suis pas sur que sur un select la propriété soit chargée. En revanche, en spécifiant une lecture de schema (appeler la méthode FillSchema sur l'adapter) elle l'est.

    Exemple : (retourne unioquement le schema dans la datatable, sans les données) :

    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
     
                SqlConnection connection = new SqlConnection(ConnectionString);
                SqlCommand selectCommand = new SqlCommand();
                selectCommand.CommandType = CommandType .Text;
                selectCommand.Connection = connection;
                connection.Open();
                selectCommand.CommandText = "select * from Portfolios";
                List<string> fields;
                using (DataTable schemaDataTable = new DataTable("Schema"))
                {
                    using (SqlDataAdapter schemaAdapter = new SqlDataAdapter(selectCommand))
                    {
                        schemaAdapter.FillSchema(schemaDataTable, SchemaType.Mapped);
    // traiter ici schemaDataTable
                    }
                }
    Je ne suis pas sur que cela fonctionne avec tous les SGBD, mais en tout cas avec Sql Server et Oracle, ça marche.

    J'ai pris un bout de code dans une classe à moi, et je l'ai élagué, donc je ne garantie pas la compile "as is"

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre du Club Avatar de Agoye
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup il fallait effectivement utilisé le FillSchema

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

Discussions similaires

  1. [Débutant] Récupérer contenu colonne dans un dataset
    Par pitite dans le forum VB.NET
    Réponses: 8
    Dernier message: 20/04/2012, 16h23
  2. Réponses: 18
    Dernier message: 23/05/2008, 17h03
  3. Réponses: 2
    Dernier message: 22/05/2008, 12h37
  4. [C#/Oracle 10] Récupérer un curseur générique dans un dataset
    Par aurelien.tournier dans le forum Accès aux données
    Réponses: 3
    Dernier message: 11/06/2007, 16h04
  5. récupérer le contenu d'un dataset dans un textbox ?
    Par mstic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/03/2007, 19h24

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