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 :

[VB.NET] [ADO.NET] Récupérer id après insertion


Sujet :

Accès aux données

  1. #1
    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 [VB.NET] [ADO.NET] Récupérer id après insertion
    bonsoir a tous

    pour inserer des données dans une table dont un champ est auto increment j'utilise sqlcommand.

    comment puis je recuperer id apres insertion avec sqlcommand ou faut-il utilisé un autre objet ADO.

    Cordialement
    fred


    [Tag
    [VB.NET] ajouté par freegreg]
    [Les Règles du Forum developpez.net et les Règles du Forum .NET]

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Cela dépent de la base de données que tu utilises, sous sql serveur, tu dois faire une requête du type:


  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut .

    Après insertion des données dans la base du fais (si tu utilise un DataSet )

    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Une autre solution peut être utilisée pour résoudre ton problème est de remplir ta clé primaire par une valeur complément généré par l'application c'est à dire des valeurs comme les guid.
    C'est pas la base qui gère la création de la clé primaire mais l'application
    --> une requête de moins pour savoir quel est la clé primaire générée.

    Pour des bases sqlserver c'est gerer par le type unique identifier
    Pour access tu peut convertir l'unique UID en string. Car je crois pas que ce type existe.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par dev01
    Salut .

    Après insertion des données dans la base du fais (si tu utilise un DataSet )

    Je ne vois pas en quoi faire un update sur son dataset va lui permettre de récupérer l'id

  6. #6
    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
    merci a tous pour vos reponse

    mais mon probleme est mineur je pense

    Voici ce que je suis arrivé a faire a ce jour (Attention Newbie) et j'utilise webmatrix

    lors du click sur sur mon bnt de formulaire j'appel une procedure stockée

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Sub bntCoordonnee_Click(sender As Object, e As EventArgs)
        if (Page.IsValid)
            Dim RedirectionURL as string = "./Confirme.aspx"
     
        'Dim connStr As String = ConfigurationSettings.AppSettings("ConnectionString")
     
        Dim connStr As String = "server=(local);trusted_connection=true;database=ImmoPige;"
        Dim myConnection As new SqlConnection(connStr)
     
            Dim Mycommand As New sqlcommand
            MyCommand = New SqlCommand("AjoutVendeur",myConnection)
            MyCommand.CommandType = commandType.StoredProcedure
     
            With myCommand.Parameters
            .add("@Nom", SqlDbType.varchar).value = Nom.text
            .add("@Prenom", SqlDbType.varchar).value = Prenom.text
            .add("@Adresse", SqlDbType.text).value = Adresse.text
            .add("@CodePostal", SqlDbType.char).value = CodePostal.text
            .add("@Ville", SqlDbType.varchar).value = Ville.text
            .add("@Telephone", SqlDbType.char).value =Telephone.text
            .add("@FaxGsm", SqlDbType.char).value =FaxPortable.Value
            .add("@Email", SqlDbType.varchar).value =Email.text
            .add("@Password", SqlDbType.varchar).value =Password.text
            .Add("@Identity", SqlDbType.Int).Value = 0
            .Add("@VilleOK", SqlDbType.Int).Value = 0
     
            if NewsLetter.Checked = True then
            .add("@InsertNewsLetter", SqlDbType.bit).value =1
            else
            .add("@InsertNewsLetter", SqlDbType.bit).value =0
            end if
     
            End With
                Try
                    myConnection.Open()
                    MyCommand.ExecuteNonQuery()
                    myConnection.Dispose()
                    myConnection=Nothing
     
                Catch ex As SqlException
                   Dim errorMessage As String = "Message: " & ex.Message & vbCrLf & _
                                              "Source: " & ex.Source & vbCrLf & _
                                              "State: " & ex.State & vbCrLf & _
                                              "Number: " & ex.Number & vbCrLf & _
                                              "Procedure: " & ex.Procedure & vbCrLf
                    Message.InnerHtml=errorMessage.ToString
                Finally
     
                    'RedirectionURL &="?Comfirm="
                    'Response.Redirect(RedirectionURL & "?Comfirm=" & rowsAffected)
                    Response.Redirect(RedirectionURL)
     
                End Try
     
        End If
        End Sub
    Voici ma procedure stockée

    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
     
    CREATE PROCEDURE [dbo].AjoutVendeur
    (@Codepostal char(5),
    @Ville varchar(50),
    @Nom varchar(50),
    @Prenom varchar(50),
    @Adresse text,
    @Telephone char(10),
    @FaxGsm char(10),
    @Email varchar(70),
    @Password varchar(10),
    @NewsLetter bit,
    @Identity int output,
    @VilleOk  int output)
     
    AS
    SET @VilleOk =(SELECT VilleID  FROM dbo.Ville WHERE CodePostal=@CodePostal AND Ville=@Ville)
     
    IF  NOT @VilleOk IS NULL
     
    BEGIN
     INSERT INTO dbo.Vendeur
                          (Nom, Prenom, Adresse, VilleID, Telephone, FaxGsm, Email, Password, NewsLetter)
    VALUES     (@Nom, @Prenom, @Adresse, @VilleOk, @Telephone, @FaxGsm, @Email, @Password, @NewsLetter);
    END
     
    ELSE
     
    BEGIN
     INSERT INTO dbo.Ville
                          (CodePostal, Ville)
    VALUES     (@CodePostal, @Ville);
    SET @Identity = SCOPE_IDENTITY()
    INSERT INTO dbo.Vendeur
                          (Nom, Prenom, Adresse, VilleID, Telephone, FaxGsm, Email, Password, NewsLetter)
    VALUES     (@Nom, @Prenom, @Adresse, @Identity,@Telephone, @FaxGsm, @Email, @Password, @NewsLetter);
    END
    GO
    Tous cela fonction a aujourd'hui malgré que certain vont certainement s'arrache les cheveux sur la qualité de mon code.

    Il me manque simplement la recuperation de l'id du nouveau vendeur pour effectué mon redirecturl de cette facon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Finally
     
                    'RedirectionURL &="?Comfirm="
                    'Response.Redirect(RedirectionURL & "?Comfirm=" & monid)
                    Response.Redirect(RedirectionURL)
     
                End Try
    Cordialement
    fred

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par Morpheus
    Citation Envoyé par dev01
    Salut .

    Après insertion des données dans la base du fais (si tu utilise un DataSet )

    Je ne vois pas en quoi faire un update sur son dataset va lui permettre de récupérer l'id
    Il me semble que lors d'un Update le dataSet vérifie toute les valeurs qu'il possede et les met à jour si besoin ??? A vérifier ...
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu utilises SQL Server ? Dans ce cas, effectue une requête

    select @@identity

    cf: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_globals_50u1.asp

  9. #9
    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
    faire un select @@Identity pas de probleme, mais comment recuperé la valeur du select .

    Comment exploité la valeur de retour de la procedure stockée puisque j'utilise un ExecuteNonQuery()


    merci

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    tu fais ton select @@identity puis tu récupères le résultat avec ExecuteScalar : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatasqlclientsqlcommandclassexecutescalartopic.asp


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

Discussions similaires

  1. [ASP.NET-ACCESS] probleme d'update apres insertion
    Par come18 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/05/2007, 12h59
  2. [ADO.Net][C#/SQL 2005] Comment faire INSERT avec variable ?
    Par hduchemin dans le forum Accès aux données
    Réponses: 1
    Dernier message: 25/01/2006, 17h34
  3. [ADO.Net][C#] Comment récupérer 1 valeur du BindingContext ?
    Par yann_DZ dans le forum Accès aux données
    Réponses: 2
    Dernier message: 24/01/2006, 21h56
  4. [ADO.Net][C#] Comment récupérer des infos d'une table SQL ?
    Par lamojuli dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2006, 16h00
  5. [VB NET] [ADO NET]: Insertion de données DATE ds une BDD ??
    Par ADONET dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/01/2006, 20h24

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