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 la valeur de l'id après une insertion dans la base


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut Récupérer la valeur de l'id après une insertion dans la base
    Bonjour,
    J'essaie de récupérer l'id généré automatiquement lors d'une insertion dans la base de données, afin de l'utiliser pour une autre insertion, mais j'ai un message d'erreur m'indiquant que mon DataReader est vide. Pourtant, en effectuant directement la requête depuis l'invite SQL, je reçois bien le résultat voulu.
    Mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    SqlCommand cmd2 = new SqlCommand("INSERT INTO Page (page_name, page_secured) VALUES (@pagename, @pagesecured)", conn);
                    cmd2.Parameters.Add(new SqlParameter("@pagename", pagename));
                    cmd2.Parameters.Add(new SqlParameter("@pagesecured", '0'));
                    cmd2.ExecuteNonQuery(); // Create this new page
     
                    SqlCommand cmd3 = new SqlCommand("SELECT page_id FROM Page WHERE page_name = @pagename", conn);
                    cmd3.Parameters.Add(new SqlParameter("@pagename", pagename));
                    SqlDataReader rdr3 = cmd3.ExecuteReader();
     
                    pageid = rdr3["page_id"]; // Get the id of the page
    J'ai vérifié si l'enregistrement est bien effectué par cmd2 et c'est le cas, donc je ne comprends pas du tout pourquoi rdr3 ne retourne rien...

    Merci de votre aide.

  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 : 42
    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
    Points : 39 754
    Points
    39 754

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Merci, j'ai testé mais je dois mal l'utiliser vu que j'ai toujours la même erreur avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    SqlCommand cmd2 = new SqlCommand("INSERT INTO Page (page_name, page_secured) VALUES (@pagename, @pagesecured)", conn);
                    cmd2.Parameters.Add(new SqlParameter("@pagename", pagename));
                    cmd2.Parameters.Add(new SqlParameter("@pagesecured", '0'));
                    cmd2.ExecuteNonQuery(); // Create this new page
     
                    SqlCommand cmd3 = new SqlCommand("SELECT @@IDENTITY AS page_id FROM Page", conn);
                    SqlDataReader rdr3 = cmd3.ExecuteReader();
     
                    pageid = rdr3["page_id"]; // Get the id of the page
                    rdr3.Close();
    J'ai également testé directement depuis l'invite SQL et ça fonctionne bien, par contre j'avais comme retour 3 lignes contenant le résultat, c'est normal ? Si oui, quel intérêt ?

  4. #4
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,


    Pour prendre de bonnes habitudes créé une procédure stockée du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE PROCEDURE PROCEDURENAME
    	@PAGENAME VARCHAR,
    	@PAGESECURED BIT
    AS
    BEGIN
    	INSERT INTO PAGE (PAGE_NAME, PAGE_SECURED) VALUES (@PAGENAME, @PAGESECURED)
    	SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
    END
    GO
    Ainsi, tu n'as qu'à faire un ExecuteScalar et tu auras ton ID.

    A+

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Points : 281
    Points
    281
    Par défaut
    Merci, ça fonctionne parfaitement

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/04/2014, 12h32
  2. [MySQL] affichage d'une page après l'insertion dans la base PHP/MySQL
    Par autre dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 22/09/2011, 11h24
  3. modification d'une insertion dans la base
    Par smiles dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 01/04/2010, 00h56
  4. Détecter s'il y a une insertion dans ma base de données
    Par monalisa-smile dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/04/2009, 14h56
  5. Réponses: 4
    Dernier message: 08/01/2007, 13h06

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