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

ADO.NET Discussion :

Récupération de l'identifiant autogénéré après une requête d'insertion


Sujet :

ADO.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut Récupération de l'identifiant autogénéré après une requête d'insertion
    Bonjour,

    J'utilise ADO.NET et C# et j'aimerais savoir s'il est possible de récupérer l'identifiant autogénéré après une requête d'insertion. Je fais ma requête d'insertionavec un DbCommand comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    using (DbCommand cmd = dbConnection.CreateCommand())
    {
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.CommandText = sqlQuery;
     
        cmd.ExecuteNonQuery();
    }
    sqlQuery représente ma requête d'insertion.

    Cordialement.

  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 : 63
    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
    Type de SGBD ?
    Identifiant de type SEQUENCE/IDENTITY ou de type GUID ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    En plus de la question posée par Bluedeep, j'ajouterais une petite précision. La méthode ExecuteNonQuery telle quelle ne peut renvoyer de valeur que le nombre de lignes affectées (modiofiées ou supprimées) par ta requête. Donc impossible d'avoir le dernier ID auto généré par la BDD. Pour pouvoir récupérer le dernier ID, il faut que tu te crées une procédure stockée qui aura un paramètre en sortie et c'est ce paramètre et que tu assigneras avant la sortie de ta procédure.
    Concernant la récupération de l'ID, pour SQL Server il faut regarder SCOPE_IDENTITY()

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Est ce que vous pouvez au moins dès le départ nous préciser le SGBDR que tu utilises ?
    La technique utilisée y dépend.

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    En plus de la question posée par Bluedeep, j'ajouterais une petite précision. La méthode ExecuteNonQuery telle quelle ne peut renvoyer de valeur que le nombre de lignes affectées (modiofiées ou supprimées) par ta requête. Donc impossible d'avoir le dernier ID auto généré par la BDD. Pour pouvoir récupérer le dernier ID, il faut que tu te crées une procédure stockée qui aura un paramètre en sortie et c'est ce paramètre et que tu assigneras avant la sortie de ta procédure.
    Concernant la récupération de l'ID, pour SQL Server il faut regarder SCOPE_IDENTITY()

    Ou à la fin de votre procédure stockée faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SCOPE_IDENTITY()
    Puis le récupérer via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlCommand.ExecuteScalar();

    Enfin bref, il y a beaucoup de façon de le récupérer...

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 iberserk Voir le message
    Ou à la fin de votre procédure stockée faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SCOPE_IDENTITY()
    Sauf que ici on ne sait pas quel SGBD il utilise.
    Donc lui dire de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SCOPE_IDENTITY()
    pour SqlServer

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MY_TABLE_SEQUENCE.CurrVal
    pour Oracle

    ne risque pas de lui apporter grand chose si il ne fournit pas plus d'infos.

  7. #7
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Bluedeep: Tout à fait, j'avoue que je répondais ici plus à h2s84 qu'à l'initiateur de ce topic

  8. #8
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il vous faudra une ligne pour DB2, Access, Foxpro ......
    Bonne chance.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 WOLO Laurent Voir le message
    Il vous faudra une ligne pour DB2, Access, Foxpro ......
    Bonne chance.
    Vous connaissez beaucoup d'utilisateur actuels de FoxPro ?

    Sinon, oui, en effet, la notion de Sequence (version Oracle) ou d'Identity (version SQL SERVER) n'étant pas normalisé, il n'y a pas tellement le choix.

    Mais si le P.I. nous disait quel SGBD il utilise on perdrait moins de temps.

    Or, visiblement, il s'est désintéressé de la question ... (bien qu'il soit passé sur le forum).

  10. #10
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    exactement, c'est ce que j'ai voulu dire en citons meme foxpro.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    J'utilise le SGBD SQL Server 2000, je vais essayer SCOPE_IDENTITY()

    Cordialement

  12. #12
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Prend desormais l'habitude de donner de telles precisions au bedut de ton message.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Désolé pour le manque de précisions, je ferai attention les prochaines fois.

    Cordialement

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/10/2010, 18h07
  2. [MySQL] Récupération dans un text area de données apres une requète
    Par sexy-meta dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/12/2006, 17h29
  3. Etat après une requête
    Par platoon64 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/05/2006, 14h03
  4. récupération du message à la fin d'une requête
    Par beab1802 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 21/04/2006, 22h33
  5. [MySQL] Afficher une date correctement après une requête
    Par Nerva dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/04/2006, 16h27

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