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 SqlConnectionPrivate 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.