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

VB.NET Discussion :

vb.net/bd Sqlce:Requête paramétrée avec un indentifiant auto-incrémente


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Points : 60
    Points
    60
    Par défaut vb.net/bd Sqlce:Requête paramétrée avec un indentifiant auto-incrémente
    Bonjour la communauté,je réalise actuellement une application constituée d'une bd sqlce et d'une interface utilisateur. Mon souhait c'est d'insérer des données dans ma bd en utilisant les requêtes paramétrées. Mon problème c'est que dans ma bd,j'ai l'identifiant de ma table qui est auto-incrémente et je ne sais pas comment gérer cela. Voici mon bout de code en question. Merci d'avance
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Private Sub Btn_Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Enregistrer.Click
            'connexion()
     
     
            req = "INSERT INTO Fiche_perso(Dat_adh, Nom, Pren, Dat_naiss, Age, Tranche, Sexe, Pays, Ville, Contact, Quart, Nom_P, Nom_M, Nom_R, Mbre_P, Mbre_M, Contact_P, Contact_M, Contact_R, Appel, Rep_appel, Statut, Niv_etud)" &
      " & Values(@Dat_adh, @Nom, @Pren, @Dat_naiss, @Age, @Tranche, @Sexe, @Pays, @Ville, @Contact, @Quart, @Nom_P, @Nom_M, @Nom_R, @Mbre_P, @Mbre_M, @Contact_P, @Contact_M, @Contact_R, @Appel, @Rep_appel, @Statut, @Niv_etud)"
            'Création de la commande sql
            Cmd = New SqlCeCommand(req, Cnxbd)
            'Création et déclarations de paramètres
            With Cmd.Parameters
     
                .AddWithValue("@Dat_adh", Me.MaskedTxtBox_dat_adh.Text)
                .AddWithValue("@Nom", Me.Txt_nom.Text)
                .AddWithValue("@Pren", Me.Txt_pren.Text)
                .AddWithValue("@Dat_naiss", MaskedTxtBox_dat_naiss.Text)
                .AddWithValue("@Age", Me.Txt_age.Text)
                .AddWithValue("@Tranche", Me.ListBox_tranch.Text)
                .AddWithValue("@Sexe", Me.ComboBox_sexe.Text)
                .AddWithValue("@Pays", Me.Txt_pays.Text)
                .AddWithValue("@Ville", Me.Txt_ville.Text)
                .AddWithValue("@Contact", Me.Masked_contact.Text)
                .AddWithValue("@Quart", Me.Txt_quartier.Text)
                .AddWithValue("@Nom_P", Me.Txt_nom_prenP.Text)
                .AddWithValue("@Nom_M", Me.Txt_nom_prenM.Text)
                .AddWithValue("@Nom_R", Me.Txt_nom_PrenR.Text)
                .AddWithValue("@Mbre_P", Me.Combo_mbre_pere.Text)
                .AddWithValue("@Mbre_M", Me.Combo_mbre_mere.Text)
                .AddWithValue("@Contact_P", Me.Masked_contactP.Text)
                .AddWithValue("@Contact_M", Me.Masked_contactM.Text)
                .AddWithValue("@Contact_R", Me.Masked_contactR.Text)
                .AddWithValue("@Appel", Me.ComboBox_appel.Text)
                .AddWithValue("@Rep_appel", Me.Txt_rep_appel.Text)
                .AddWithValue("@Statut", Me.ComboBox_statut.Text)
                .AddWithValue("@Niv_etud", Me.Txt_nivo_etude.Text)
                '.AddWithValue("@ID", Me.Txt_matr.Text)
     
            End With
            ' Dim ms As New MemoryStream()
     
            'PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
     
            'Dim data As Byte() = ms.GetBuffer()
     
            ' dtr("photo") = data
            ' Cmd.ExecuteNonQuery()
            Try
     
                'Execution de la requête
                Cmd.Connection.Open()
                Cmd.ExecuteNonQuery()
                Cmd.Connection.Close()
     
            Catch ex As SqlException
     
                Response.Write(ex.Message)
     
            End Try
     
     
            'ajout de la ligne dans le DataSet
     
            Mondataset.Tables("Fiche_perso").Rows.Add(dtr)
     
            'création et exécution du commandbuilder
            'pour mettre à jour le DataAdapter
            cmdb = New SqlCeCommandBuilder(Adaptateur)
     
            'mise à jour des données du DataAdapter
            'à partir du commandbuilder
            Adaptateur.Update(Mondataset, "Fiche_perso")
     
            'on vide le dataset pour le recréer avec 
            'les nouvelles données 
            Mondataset.Clear()
            Adaptateur.Fill(Mondataset, "Fiche_perso")
            dtt = Mondataset.Tables("Fiche_perso")
     
            MessageBox.Show("Le membre  " & Txt_nom.Text + " " & Txt_pren.Text & " a été enregistré avec succès dans la base de données", "Information", MessageBoxButtons.OK)
        End Sub
    Voici aussi le code de chargement de mon formulaire
    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
    Private Sub Fiche_perso_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Cnxbd = New SqlCeConnection("Data Source=|DataDirectory|\BD_Jeunes.sdf")
            Try
                cnx.Open()
                req = "Select* From Fiche_perso"
                Dim Cmd As New SqlCeCommand(req, cnx)
                Dim Adaptateur As New SqlCeDataAdapter(Cmd)
                Dim MonDataSet As New DataSet
                Adaptateur.Fill(MonDataSet, "Fiche_perso")
                Cmd.Dispose()
     
                Timer1.Start()
                'Label13.Visible = False
                'Txt_rep_appel.Visible = False
     
     
                cnx.Close()
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
     
        End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bojour,
    si ton Id est un auto-incrément, tu n'a pas à le gérer, en revanche si tu veux récupérer son ID alors un select Max(id) dans la foule!

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Points : 60
    Points
    60
    Par défaut
    Merci pour votre réponse,mais comment le faire? svp

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Bonjour

    Citation Envoyé par hugnka Voir le message
    Merci pour votre réponse,mais comment le faire? svp
    Juste après la requête d'insertion faire une requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(id) as NewId from Fiche_perso
    Via un "ExecuteScalar" et récupérer la valeur retournée : ce sera ton id nouvellement créé.

    Attention : contrairement à Sql Server, la version CE ne supporte qu'une seule requête par commande; donc :

    - une commande pour l'insert (comme tu l'as fait)
    - une commande pour récupérer l'ID via le select que j'ai mis au dessus (que tu exécute via un ExecuteScalar puisque une seule valeur est retournée : pas utile d'aller lire un DataReader ou autre).
    Beaucoup trop d'hommes viennent au monde : l'Etat a été inventé pour ceux qui sont superflus. (Friedrich Nietzsche)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim Rs as adodb.Recordset= New ADODB.Recordset
     Rs.Open("select max(id) as NewId from Fiche_perso", cnx, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
    if Rs.eof = false then MessageBox.Show(Rs("NewId ").value)

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim Rs as adodb.Recordset= New ADODB.Recordset
     Rs.Open("select max(id) as NewId from Fiche_perso", cnx, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
    if Rs.eof = false then MessageBox.Show(Rs("NewId ").value)
    Les RecordSet sont une vieille verrue de VB6. J'ignorais qu'ils étaient encore dispo; dans tous les cas, ça ne me semble pas du tout une bonne idée de conseiller leur usage.
    Beaucoup trop d'hommes viennent au monde : l'Etat a été inventé pour ceux qui sont superflus. (Friedrich Nietzsche)

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 143
    Points : 60
    Points
    60
    Par défaut
    Franchement merci pour vos réponses,je mets tout de suite en application pour voir le résultat et vous tenir informé.

Discussions similaires

  1. Requête paramétrée avec ADO.NET
    Par Maniz dans le forum VB.NET
    Réponses: 0
    Dernier message: 28/09/2011, 10h39
  2. [WD8] Requêtes paramétrées avec accès odbc direct
    Par devalender dans le forum WinDev
    Réponses: 5
    Dernier message: 20/12/2005, 13h25
  3. Déterminer une requête paramétrée avec LIKE
    Par priest69 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2005, 20h29
  4. [VB.NET] [ODBC] Pb requête UPDATE avec clé primaire..?
    Par Pleymo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/03/2005, 19h46

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