Examen de Ado.net : VB et MySQL

Afin de gérer les inscriptions des étudiants dans une équipe, on utilise une application Desktop
connectée à une base de données SQL-Server. Les caractéristiques de ce serveur sont :

  • IP du serveur : 192.168.1.200 ;
  • Nom de la base de données : db_Inscription ;
  • Authentification : User : Admin, Password : 1234.
    La structure de cette base de données est la suivante :

L’IHM de cette application est illustrée par la figure suivante :

TRAVAIL DEMANDÉ

1- Dans un module, déclarer les objets de connexion et créer la fonction « Connexion» qui établit une connexion avec le serveur de base de données (Il faut gérer les exceptions).

Imports MySql.Data.MySqlClient

Public con As MySqlConnection = Nothing

Public Function Connexion() As Boolean
Try
con = New MySqlConnection(« Server=192.168.1.200; Database=db_Inscription;User ID=Admin;Password=1234; »)
con.Open()
Return True
Catch ex As MySqlException
msgbox(« Erreur de connexion :  » & ex.Message)
Return False
End Try
End Function

2- Dans la classe de l’IHM (Form), Écrire le code de la procédure « charger_Equipes» qui charge le comboBox « cmbEquipe » par les noms de toutes les équipes. Voici un aperçu de l’objet « cmbEquipe » :

Private Sub charger_Equipes()
Dim req As String
req = « select * from equipe »
Dim cmd As New SqlCommand(req, con)
Dim dr As SqlDataReader = cmd.ExecuteReader()
Dim table As New DataTable
table.Load(dr)
dr.Close()
cmbEquipe.ValueMember = « numeq »
cmbEquipe.DisplayMember = « nomeq »
cmbEquipe.DataSource = table
End Sub

3- Écrire le code de la procédure «affiche_Etudiants » qui liste tous les étudiants dans l’objet DataGridView nommé « DGVListe ».
Voici un aperçu de l’objet DataGridView (La colonne Equipe contient les noms des équipes).

Private Sub affiche_Etudiants()

Dim req As String
req = « select Code,(nom+’ ‘+ prenom) as [Nom Complet],dateNais as
[Date Naissance],numMassar as Massar,nomEq as Equipe from equipe e inner join etudiant etd on e.numeq=etd.numeq »
Dim cmd As New SqlCommand(req, con)
Dim dr As SqlDataReader = cmd.ExecuteReader()
Dim dt As New DataTable
dt.Load(dr)
DGVListe.DataSource = dt
End Sub

4- Écrire le code de la fonction « genererCode » qui retourne un code valide d’un nouvel étudiant. Ce code doit correspondre au maximum des codes existants incrémenté de 1.

Private Function genererCode() As Integer
Dim req As String
req = « select max(code) from etudiant »
Dim cmd As New SqlCommand(req, con)
If IsDBNull(cmd.ExecuteScalar()) Then Return 1
Return CInt(cmd.ExecuteScalar()) + 1
End Function

5- Un clic sur le bouton « CmdGenerer » fait appel à la fonction « genererCode » pour affecter à la zone de texte
« txtCode » un nouveau code.
Private Sub CmdGenerer_Click(……) Handles CmdGenerer.Click
txtCode.Text = genererCode().ToString
End Sub

On suppose que le formulaire est bien rempli, donner le code de la procédure événementielle du bouton « CmdEnregistrer » permettant d’ajouter un nouvel étudiant.

Private Sub cmdEnregistrer_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdEnregistrer.Click
Dim req As String = « insert into etudiant values( » & CInt(txtCode.Text) & « ,' » & txtNom.Text & « ‘,' » & txtPrenom.Text & « ‘,' » & dtpDateNais.Value & « ‘,' » & txtMassar.Text & « ‘, » & CInt(cmbEquipe.SelectedValue) & « ) »

Dim cmd As New SqlCommand(req, con)
cmd.ExecuteNonQuery()
affiche_Etudiants()
End Sub