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

C# Discussion :

Datarow: comment récupérer la clé primaire généré par le SGBD ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut Datarow: comment récupérer la clé primaire généré par le SGBD ?
    Bonjour,

    Pour une insertion dans ma table, j'utilise d'abord la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDataRow = maDataTable.NewRow()
    Ensuite, je remplis les champs de maDataRow avant de l'ajouter à la table et de mettre à jour la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maDataTable.AddRow(maDataRow)
    monTableAdapter.Update(maDataTable)
    J'aimerai ensuite connaitre la valeur de clé primaire donnée à ma ligne nouvellement ajoutée (colonne 'id' dans ma table). Cette colonne est bien reconnue comme clé primaire par VS, mais sa valeur de départ est toujours -1 (et s'autoincrémente vers -2, -3, etc.) et ne correspond jamais à la vraie valeur dans ma table, même après la méthode Update().

    Comment faire pour récupérer cette clé primaire ? Je dois l'utiliser pour l'insérer dans la ligne d'une autre table...
    Il doit bien y avoir un moyen de synchroniser l'état exact de ma ligne nouvellement ajoutée ?

    Bonne fin d'année

  2. #2
    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
    Dans ta DataTable, la colonne "id" a bien la propriété AutoIncrement = True ?
    Quel est le SGBD que tu utilises ?
    Dans la base, les valeurs insérées sont-elles correctes ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    Dans ta DataTable, la colonne "id" a bien la propriété AutoIncrement = True ?
    Oui! La première fois (après l'exécution du programme), l'id d'une nouvelle ligne est -1, la suivante sera -2, -3, etc.
    Mais la clé réelle se ballade entre 1 et 2^63.

    Quel est le SGBD que tu utilises ?
    PostgreSQL.

    Dans la base, les valeurs insérées sont-elles correctes ?
    Mis à part l'id qui est généré par pgSQL, les valeurs des autres colonnes sont correctes...

  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
    Par défaut
    Bizarre...

    Tu utilises quoi comme provider ? Npgsql, ODBC, autre ? Je pense que Npgsql devrait savoir gérer ça correctement puisqu'il est fait spécifiquement pour PostgreSQL...

    Les commandes INSERT/UPDATE/DELETE du DataAdapter, tu les as écrites toi-même ? Si oui, essaie d'utiliser plutôt un CommandBuilder.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut
    Tu utilises quoi comme provider ? Npgsql, ODBC, autre ? Je pense que Npgsql devrait savoir gérer ça correctement puisqu'il est fait spécifiquement pour PostgreSQL...
    J'utilise ODBC... je vais tester avec Npgsql. Merci du conseil.

    Les commandes INSERT/UPDATE/DELETE du DataAdapter, tu les as écrites toi-même ? Si oui, essaie d'utiliser plutôt un CommandBuilder.
    Je les ai écrite avec un CommandBuilder...

  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
    Par défaut
    Citation Envoyé par Splug Voir le message
    J'utilise ODBC...
    Dans ce cas ça ne m'étonne pas que ça fonctionne pas : la façon de récupérer le dernier ID généré varie d'un SGBD à l'autre, et ODBC ne peut pas savoir comment le faire pour PostgreSQL en particulier...

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

Discussions similaires

  1. comment récupérer le flux xml généré par le ws
    Par didine6393 dans le forum Services Web
    Réponses: 1
    Dernier message: 25/10/2009, 19h15
  2. Comment recupérer le code SQL généré par Hibernate !
    Par nebisse dans le forum Hibernate
    Réponses: 14
    Dernier message: 21/08/2008, 23h56
  3. comment récupérer la clef primaire
    Par aedius dans le forum PhpMyObject
    Réponses: 2
    Dernier message: 16/01/2008, 23h30
  4. Comment cliquer sur des clips générés par actionscript
    Par ar vuzhugenn dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/01/2008, 11h02
  5. [XML] comment récupérer un arbre xml posté par http ?
    Par tomperso dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/07/2004, 10h29

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