Ado.net & Vb.net : Application de gestion de contacts

Exercice: Créez une application de gestion de contacts qui permet de :

  • Afficher la liste des contacts dans un DataGridView
  • Ajouter un nouveau contact en remplissant un formulaire
  • Modifier un contact existant en double-cliquant sur sa ligne dans le DataGridView
  • Supprimer un contact en sélectionnant sa ligne et en cliquant sur un bouton « Supprimer »

Pour cela, vous pouvez créer une base de données « Contacts » avec une table « Contact » contenant les champs suivants:

  • ID (int, clé primaire, auto-incrémenté)
  • Nom (varchar(50))
  • Prénom (varchar(50))
  • Adresse (varchar(100))
  • Ville (varchar(50))
  • Code postal (varchar(10))
  • Téléphone (varchar(20))
  • Email (varchar(50))

Vous pouvez utiliser les objets de connexion, de commande, de DataAdapter et de DataSet pour effectuer les opérations CRUD (Create, Read, Update, Delete) sur la base de données.

1- Afficher la liste des contacts dans un DataGridView

Pour vous aider à démarrer, voici une proposition de code pour la procédure de connexion à la base de données en VB.NET:

Imports System.Data.SqlClient
    Dim ds As New DataSet()
    Dim adapter As New SqlDataAdapter
    Dim connection As New SqlConnection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ' Connexion à la base de données
    Dim connectionString As String = "Data Source=.\SQLEXPRESS;Initial Catalog=contacts;Integrated Security=True"
    connection = New SqlConnection(connectionString)
    connection.Open()

    ' Remplissage du DataSet avec les données de la table "Contacts"
    Dim query As String = "SELECT * FROM Contacts"
    adapter = New SqlDataAdapter(query, connection)
    adapter.Fill(ds, "Contacts")

    ' Fermeture de la connexion
    connection.Close()

    ' Affichage des données dans le DataGridView
    LoadContacts()
End Sub

sub LoadContacts()
  dgvContacts.DataSource = ds.Tables("Contacts")
end sub

Nous utilisons un objet SqlDataAdapter pour remplir le DataSet avec les données de la table « Contacts ». Ensuite, nous utilisons simplement la propriété DataSource du DataGridView pour afficher les données dans la table.

2- Ajouter un nouveau contact en remplissant un formulaire

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim newRow As DataRow = ds.Tables("Contacts").NewRow()
    newRow("Nom") = TextBox1.Text
    newRow("Prenom") = TextBox2.Text
    newRow("Adresse") = TextBox3.Text
    newRow("Ville") = TextBox4.Text
    newRow("CodePostal") = TextBox5.Text
    newRow("Telephone") = TextBox6.Text
    newRow("Email") = TextBox7.Text
    ds.Tables("Contacts").Rows.Add(newRow)
    adapter.Update(ds, "Contacts")
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    TextBox6.Text = ""
    TextBox7.Text = ""
End Sub

Dans cet exemple, le formulaire contient sept TextBox correspondant aux sept colonnes de la table Contacts. Lorsque l’utilisateur clique sur le bouton Ajouter, les données sont extraites des TextBox et stockées dans un nouveau DataRow dans le DataSet. La méthode Update() du DataAdapter est ensuite appelée pour enregistrer les modifications dans la base de données.

3- Modifier un contact existant en double-cliquant sur sa ligne dans le DataGridView

Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
       ' Vérifier si la ligne double-cliquée est valide
  If e.RowIndex >= 0  Then
          ' Récupérer l'ID du contact sélectionné
   Dim contactID As Integer = CInt(DataGridView1.Rows(e.RowIndex).Cells("ID").Value)      
  ' Créer la commande SQL pour récupérer les informations du contact sélectionné
        Dim sql As String = "SELECT * FROM Contacts WHERE ID = @ID"
        Dim command As New SqlCommand(sql, connection)
        command.Parameters.AddWithValue("@ID", contactID)

     ' Créer un DataAdapter pour remplir un DataSet avec les informations du contact
        dim adapter1 as New SqlDataAdapter(command)
        adapter1.Fill(ds, "unContact")

        ' Vérifier si des informations ont été récupérées
        If ds.Tables("unContact").Rows.Count > 0 Then
            ' Récupérer les informations du contact
            Dim row As DataRow = ds.Tables("Contacts").Rows(0)
            TextBox2.text = CStr(row("Nom"))
            TextBox3.text = CStr(row("Prenom"))
            TextBox4.text = CStr(row("Adresse"))
            TextBox5.text = CStr(row("Ville"))
            TextBox6.text = CStr(row("CodePostal"))
            TextBox7.text = CStr(row("Telephone"))
            TextBox8.text = CStr(row("Email"))
        End If
  End If
End Sub

Dans ce code, Nous récupérons l’ID du contact sélectionné en double-cliquant sur une ligne du DataGridView. Nous exécutons une commande SELECT pour récupérer les informations du contact. Nous utilisons un DataAdapter pour remplir un DataSet avec ces informations. Nous récupérons ensuite les informations du contact dans un DataRow pour remplir les zones de texte.

Private Sub btnModifier_Click(sender As Object, e As EventArgs) Handles btnModifier.Click
        ' Rechercher le contact dans le DataSet
        Dim contact As DataRow = ds.Tables("Contacts").Rows.Find(idContact)

        If contact IsNot Nothing Then
            ' Mettre à jour les champs du contact
            contact("Nom") = TextBox2.Text
            contact("Prenom") = TextBox3.Text
            contact("Adresse") = TextBox4.Text
            contact("Ville") = TextBox5.Text
            contact("CodePostal") = TextBox6.Text
            contact("Telephone") = TextBox7.Text
            contact("Email") = TextBox8.Text

            ' Mettre à jour la base de données
            adapter.Update(ds, "Contacts")

            ' Rafraîchir le DataGridView
            ds.Tables("Contacts").Clear()
            adapter.Fill(ds, "Contacts")
        End If
    End If
End Sub

On récupère l’ID du contact sélectionné et on recherche ce contact dans le DataSet. Si on trouve le contact, on met à jour ses champs en utilisant les valeurs des zones de texte. Ensuite, on appelle la méthode Update du DataAdapter pour mettre à jour la base de données avec les modifications. Enfin, on rafraîchit le DataGridView en rechargeant les données de la base de données dans le DataSet.

4- Supprimer un contact en sélectionnant sa ligne et en cliquant sur un bouton « Supprimer »

Private Sub btnSupprimer_Click(sender As Object, e As EventArgs) Handles btnSupprimer.Click
    ' Vérifier que l'utilisateur a sélectionné une ligne dans le DataGridView
    If dgvContacts.SelectedRows.Count = 0 Then
        MessageBox.Show("Veuillez sélectionner un contact à supprimer.", "Erreur de sélection", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Exit Sub
    End If

    ' Demander confirmation à l'utilisateur avant de supprimer le contact
    Dim result As DialogResult = MessageBox.Show("Êtes-vous sûr de vouloir supprimer ce contact ?", "Confirmation de suppression", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If result = DialogResult.No Then
        Exit Sub
    End If

    ' Récupérer l'ID du contact à supprimer
    Dim id As Integer = CInt(dgvContacts.SelectedRows(0).Cells("ID").Value)

    ' Supprimer le contact de la base de données
    Dim dr As DataRow = ds.Tables("Contacts").Rows.Find(id)
    If dr IsNot Nothing Then
        dr.Delete()
        Dim builder As New SqlCommandBuilder(da)
        da.Update(ds, "Contacts")
    End If

    ' Actualiser le DataGridView
    LoadContacts()
End Sub

Ce code vérifie d’abord que l’utilisateur a sélectionné une ligne dans le DataGridView, puis lui demande confirmation avant de supprimer le contact. Ensuite, il récupère l’ID du contact à supprimer, supprime le contact de la base de données en utilisant un objet SqlDataAdapter et actualise le DataGridView.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *