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

Accès aux données Discussion :

[C#] Apres un insert recuperer l'identifiant


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut [C#] Apres un insert recuperer l'identifiant
    Bonjour à tous !!!

    Je suis confronté à un problème que je ne sais résoudre.

    J'ai une table super simple nommée "Année"
    Elle possède deux colonnes :

    Identifiant : uniqueidentifier
    Libelle : char

    Maintenant lorsque j'ajoute une ligne via mon application je souhaiterais au moment de l'insertion recupérer l'identifiant de la ligne.

    J'ai trouvé pas mal d'exemple sur le net et ce forum mais aucun ne marche.

    Voici mon code d'insertion :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
        private void InsertAnnee(int annee)
        {
            object retour;
            Boolean Erreur = false;
            SqlTransaction transaction = null;
            string ChaineConnexion = (string)ConfigurationManager.ConnectionStrings["Site_ENATAConnectionString"].ConnectionString;
            SqlConnection Connexion = new SqlConnection(ChaineConnexion);
            string req = "Insert Into Annee values (newid(), '" + annee.ToString() + "'); Select @@IDENTITY as 'identity'";
            try
            {
                Connexion.Open();
                transaction = Connexion.BeginTransaction();
                SqlCommand MyCommand = new SqlCommand(req, Connexion);
                MyCommand.Transaction = transaction;
                retour = MyCommand.ExecuteScalar();
            }
            catch
            {
                Erreur = true;
            }
            finally
            {
                // Validation de la trnasaction
                if (transaction != null)
                {
                    if (Erreur)
                    {
                        transaction.Rollback();
                    }
                    else
                    {
                        try
                        {
                            transaction.Commit();
                        }
                        catch
                        {
                            transaction.Rollback();
                        }
                    }
                }
                // fermeture de la connexion
                if (Connexion.State == ConnectionState.Open)
                {
                    Connexion.Close();
                }
            }
        }
    ma variable retour reste toujours à vide que j'utilise la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select @@Identity 
    Select SCOPE_IDENTITY()
    Cela vient il de mon type de donnée pour Identifiant.

    Ou alors y a t'il une erreur dans mon code (je tiens à préciser que ca ne génère pas d'exception)

    Merci davance de votre aide

    @+

    Hirochirak
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    le SELECT @@IDENTITY ne fonctionne pas avec les GUID

    il serait plus judicieux de faire, dans la forme la plus simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @Identite GUID
     
    SELECT @Identite = Newid();
     
    Insert Into Annee values (@Identite , ....... ; SELECT @Identite;
    dans la logique tu peux tout mettre dans ta string de requete cela fonctionne.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    C'est à n'y rien comprendre !

    La requête s'execute tres bien mais il n 'y aucun retour !

    voici la requête complete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string req = "DECLARE @Identite uniqueidentifier Select @identite = newid()";
            req = req + "Insert Into Compte_Rendu Values (@identite, @Client1, @Client2, @Client3, @FormationInterne,";
            req = req + " @FormationExterne, @Maladie, @CongesPayes, @RTTCollab, @RTTEmployeur, @CongesExceptionnels,";
            req = req + " @Recuperation, @Autres); ";
    et pour recuperer mon @Identite je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id_CpteRendu = (object) MyCommand.ExecuteScalar();
    D'après tous les exemples que j'ai pu trouvé ca a l'air ok mais bien sur dans mon cas ca ne veut pas fonctionner

    Merci d'avance de votre aide

    @+

    Hirochirak
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  4. #4
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 208
    Points : 227
    Points
    227
    Par défaut
    dans ta requete remet un select @Identity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string req = "DECLARE @Identite uniqueidentifier Select @identite = newid()";
            req = req + "Insert Into Compte_Rendu Values (@identite, @Client1, @Client2, @Client3, @FormationInterne,";
            req = req + " @FormationExterne, @Maladie, @CongesPayes, @RTTCollab, @RTTEmployeur, @CongesExceptionnels,";
            req = req + " @Recuperation, @Autres); Select TonChampUniqueIdentifiant = @identite ;";
    cette fois le retour de la valeur est sure

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Merci beaucoup de l'aide.

    Ca fonctionne très bien et ca m'evite de me prendre la tete sur les procédures stockées.

    Ca parait un peu tarabiscoté comme technique mais je récupère bien mon identifiant.

    Merci encore

    @+

    Hirochirak
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

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

Discussions similaires

  1. Recuperer l'identifiant aprés insertion d'un tupple
    Par bambou dans le forum PostgreSQL
    Réponses: 17
    Dernier message: 01/10/2010, 15h29
  2. Réponses: 5
    Dernier message: 30/07/2010, 20h33
  3. recuperer le numero auto apres l'insertion
    Par debutantasp dans le forum ASP
    Réponses: 1
    Dernier message: 05/03/2008, 16h38
  4. Réponses: 11
    Dernier message: 26/07/2006, 14h35
  5. comment recuperer l'id apres un insert
    Par philippe123 dans le forum ASP
    Réponses: 5
    Dernier message: 09/08/2005, 09h54

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