ObjectifGénéralN° 5 : Manipuler une base de données. Pré-requis : Bases de données et Objectif Général N° 4. ObjectifsSpécifiques Objectif Connaitre les moyens nécessaires pour accéder aux données d’une base de données. Eléments decontenu -ADO.NET -System.Data.OleDb -System.Data.SQLClient Utiliser une base de données Access dans une application Windows Form -Instructions Création d’une base de données locale avec Visual Studio -Instructions Méthodologievs Moyens -Exposé informel. - Schémas illustratifs -TP -Support -Exemple -Exemple 93333333333333p Année Universitaire : 2015/2016 Session : 2 ING Informatique Matière : Atelier de développement ObjectifGénéralN° 5 : Manipuler une base de données. 1 BasesdedonnéesenC# C# et Java utilisent des moyens similaires pour accéder aux données de base de données. C# et Java nécessitent tous deux un pilote de base de données pour exécuter les opérations de base de données. De plus, ils nécessitent tous deux une connexion de base de données, une requête SQL à exécuter sur la connexion de base de données et un jeu de résultats provenant de l'exécution de la requête. 1.1 ADO.NET ADO.NET est un ensemble de classes fournissant une interface d'accès aux données dans l'environnement Windows. Elle permet aux programmes clients d'accéder aux données, et de les manipuler, dans un fichier ou un serveur de base de données. ADO.NET propose un large ensemble de composants pour la création d'applications distribuées avec partage de données. La connexion à une source de données s’effectue par le biais d’un fournisseur comme OLE DB. 1.2 System.Data.OleDb L'espace de nom System.Data.OleDb est le fournisseur de données .NET Framework pour OLE DB. Le fournisseur de données .NET Framework pour OLE DB décrit une collection de classes utilisées pour accéder à une source de données OLE DB dans l'espace managé. À l'aide du OleDbDataAdapter, vous pouvez remplir un DataSet résidant en mémoire que vous pouvez utiliser pour interroger et mettre à jour la source de données. Parmi les principales classes de l’espace nom System.Data.OleDb , on peut citer : Classe OleDbConnection OleDbCommand OleDbDataReader Description Représente une connexion ouverte à une source de données. Représente une instruction SQL ou une procédure stockée à exécuter par rapport à une source de données. Fournit un moyen de lire un flux forward-only (lecture vers l'avant uniquement) de lignes de données depuis une source de données. 1 1.3 System.Data.SQLClient L'espace de noms System.Data.SqlClient est le fournisseur de données .NET Framework pour SQL Server. Le fournisseur de données .NET Framework pour SQL Server décrit une collection de classes utilisées pour accéder à une base de données SQL Server. Parmi les principales classes de l’espace nom System.Data.SqlClient, on peut citer : Classe SqlConnection SQLCommand SqlDataReader Description Représente une connexion ouverte à une base de données SQL Server. Représente une instruction Transact-SQL ou une procédure stockée à exécuter par rapport à une base de données SQL Server. Fournit un moyen de lire un flux de lignes avant uniquement à partir d'une base de données SQL Server. 2 Exemple :UtiliserunebasededonnéesAccessdansune applicationWindowsForm Instructions : - Créer une base de données nommée « gestion_client » avec logiciel Microsoft Access contenant une table « client ». - Reproduire l’interface graphique suivant : 2 GroupBox txb_nom btn_ajouter txb_prenom DataGridView name: dgv_liste_client btn_afficher DataGridView properties : name : dgv_liste_client AllowUserToAddRows : False AllowUserToDeleteRows : False AllowUserToOrderColumns: False AllowUserToResizeColumns : False Columns: Collections Pour définir les colonnes de DataGridView, on doit ajouter trois colonnes Nom, Prénom et Identifiant et spécifier leurs propriétés - Connecter la base de données Access « gestion_client » à l’application Windows Form en cliquant sur le menu Données/Ajouter une nouvelle sources de données. Selecionnez Base de donnéesËDataSetË Nouvelle connexionËModifiezËFichier de base de données Micrisoft AccessËParcourir (sélectionnez votre base de données) 3 Spécifier le chemin d’accès à la base - Définir les évenements des boutons « Ajouter » et « Afficher » comme suivant : using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; //il faut importer la librairie d'accès aux données using System.Data.OleDb; namespace Gestion_Client { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //Bouton Ajouter private void btn_ajouter_Click(object sender, EventArgs e) { //déclaration d'un objet connexion string chaine="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/cyber/Desktop/gestion_client.accdb" ; OleDbConnection con = new OleDbConnection(chaine); //déclaration d'un objet commande OleDbCommand cmd = con.CreateCommand(); //définition de l'objet commande (code sql) cmd.CommandText = "Insert into client (nom,prenom) values ('"+txb_nom.Text+"','"+txb_prenom.Text+"')"; //exécuter l'action try { //ouverture de la connexion à la base con.Open(); //Execution de la commande sql cmd.ExecuteNonQuery(); 4 //Afficher un message MessageBox.Show("Ajout réussi"); //vider les textbox txb_nom.Text = ""; txb_prenom.Text = ""; txb_nom.Select(); } { //fermeture de la connexion à la base con.Close(); catch(Exception ex) //s'il y a une erreur on affiche un message MessageBox.Show("Erreur: "+ex.Message); //fermeture de la connexion con.Close();} } //Bouton afficher private void btn_afficher_Click(object sender, EventArgs e) { //déclaration d'un objet connexion string chaine ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/cyber/Desktop/gestion_client.accdb" ; OleDbConnection con = new OleDbConnection(chaine); //déclaration d'un objet commande OleDbCommand cmd = con.CreateCommand(); //définition de l'objet commande (code sql) cmd.CommandText = "select * from client"; //exécuter l'action try { //ouverture de la connexion à la base con.Open(); //déclaration d'un lecteur du résultat de commande OleDbDataReader dr= cmd.ExecuteReader(); //vider datagrid dgv_liste_client.Rows.Clear(); //lecture et affectation des valeurs while (dr.Read()) { dgv_liste_client.Rows.Add(dr.GetValue(0), dr.GetValue( 2), dr.GetValue(1)); } //fermeture du lecteur dr.Close(); //fermeture de la connexion à la base con.Close(); } } } catch (Exception ex) { //s'il y a une erreur on affiche un message MessageBox.Show("Erreur: " + ex.Message); //fermeture de la connexion con.Close(); } } Débogage : 5 3 Exemple : Création d’une base de données SQL locale avec Visual Studio Pour créer un projet avec une base de données locale : ∑ Créer un projet Windows Forms ∑ Dans la barre de menus, choisissez Projet, Ajouter un nouvel Elément. La boite de dialogue Ajouter un nouvel élément s’affiche pour vous permettre d’ajouter des éléments appropriés dans un projet Windows Forms. ∑ Dans la liste de modèles d’élément, faites défiler jusqu’à ce que Base de données basée sur les services (Service-based Database) s’affiche, puis choisissez ce modèle. 6 Nommez la base de données, puis choisissez le bouton Ajouter. Pour connecter la base de données au projet, cliquez View/ Other Windows/Data Source puis Add new Data Source 7 Cliquez maintenant sur le nom de la base dans Explorateur de solution Ouvrez le menu contextuel de Tables, puis choisissez Ajouter une nouvelle table. 8 Le Concepteur de tables s'ouvre et affiche une grille avec une ligne par défaut, qui représente une seule colonne de la table que vous créez. En ajoutant des lignes à la grille, vous définissez des colonnes supplémentaires dans la table. Dans l'angle supérieur gauche du Concepteur de tables, choisissez le bouton Mettre à jour, comme le montre l'illustration ci-dessous. Dans la boîte de dialogue Aperçu des mises à jour de la base de données, choisissez le bouton Mettre à jour la base de données. Vos modifications sont enregistrées dans le fichier de base de données local. Nommer la table Pour affichez le contenu du tableau : 9 Créez l’interface graphique suivant qui permet d’ajouter, supprimer et modifier desemployés. txb_ib btn_ajouter txb_name btn_supprimer txb_age btn_modifier txb_poste using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; //importer System.Data.SqlClient //using System.Data.SqlServerCe; namespace DataBaseTest { public partial class Form1 : Form { SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\cyber\documents\visual studio 2013\Projects\TestConnectivity\TestConnectivity\Database1.mdf;Integrated Security=True"); 10 //con = new SqlCeConnection("Data Source=C:/Users/ /AppData/Local/TemporaryProjects/Datainterexample/Database1.sdf"); // SqlCeCommand cmd = con.CreateCommand(); SqlCommand cmd = new SqlCommand(); SqlDataReader dr; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { cmd.Connection = con; } //ajouter un employé private void btn_ajouter_Click(object sender, EventArgs e) { cmd.CommandText = "Insert into employee (Id,Name,Age,Post) values ('"+txb_id.Text+"','"+txb_name.Text+"', '"+txb_age.Text+"', '"+txb_poste.Text+"')"; //cmd.CommandText = "Insert into employee //([id],[nom],[age],[post]) values ('" + txb_id.Text + "','" + //txb_name.Text + "', '" + txb_age.Text + "', '" + txb_poste.Text //+ "')"; //exécuter l'action try { //ouverture de la connexion à la base con.Open(); //Execution de la commande sql cmd.ExecuteNonQuery(); //Afficher un message MessageBox.Show("Ajout réussi"); //vider les textbox txb_id.Text = ""; txb_name.Text = ""; //fermeture de la connexion à la base con.Close(); } catch (Exception ex) { //s'il y a une erreur on affiche un message MessageBox.Show("Erreur: " + ex.Message); //fermeture de la connexion con.Close(); } } //modifier un employé private void btn_modifier_Click(object sender, EventArgs e) { cmd.CommandText = "Update employee set Id='" + txb_id.Text + "', Name='" + txb_name.Text + "', Age='" + txb_age.Text + "', Poste='" + txb_poste.Text + "' where (Id=1)"; 11 //exécuter l'action try { //ouverture de la connexion à la base con.Open(); //Execution de la commande sql cmd.ExecuteNonQuery(); //Afficher un message MessageBox.Show("Modification terminée"); //vider les textbox txb_id.Text = ""; txb_name.Text = ""; } //fermeture de la connexion à la base con.Close(); catch (Exception ex) { //s'il y a une erreur on affiche un message MessageBox.Show("Erreur: " + ex.Message); //fermeture de la connexion con.Close(); } } //Suppression d’un employé private void btn_supprimer_Click(object sender, EventArgs e) { cmd.CommandText = "Delete from employee where (Id='" + txb_id.Text + "')"; //exécuter l'action try { //ouverture de la connexion à la base con.Open(); //Execution de la commande sql cmd.ExecuteNonQuery(); //Afficher un message MessageBox.Show("Suppression terminée"); //vider les textbox txb_id.Text = ""; txb_name.Text = ""; } //fermeture de la connexion à la base con.Close(); catch (Exception ex) { //s'il y a une erreur on affiche un message MessageBox.Show("Erreur: " + ex.Message); //fermeture de la connexion con.Close(); } } } } 12 93333333333333p Année Universitaire : 2015/2016 Session : 2 ING Informat ique Matière : Atelier de développement TP C# .net Créer une application Windows Form nommée « GestionPersonne » qui permet de gérer une liste des personnes. L’utilisateur doit interagir avec une base de données Access via l’interface graphique suivant : Le bouton Modifier permet de modifier le nom, le prénom, l’adresse et le numéro de téléphone d’une personne après avoir introduit son CIN. Une fois la modification est effectuée, un message sera affiché à l’utilisateur. Le bouton Supprimer permet de supprimer une personne de la base de données après avoir introduit son CIN. Une fois la suppression est effectuée, un message sera affiché à l’utilisateur. Le bouton Vider permet de vider les champs de formulaire. Le bouton Afficher permet d’afficher la liste des personnes. Compléter le code ci-dessous en suivant les consignes indiquées : Help //Insertion cmd.CommandText = "Insert into etudiant (nom,prenom) values ('"+txb_nom.Text+"','"+txb_prenom.Text+"')"; //Modification cmd.CommandText = "Update etudiant set nom=''" + txb_nom.Text + "' where cin=7 "; //Suppression cmd.CommandText = "delete * from etudiant //…. Il convient de noter que : Le bouton Ajouter permet d’ajouter les coordonnées d’une personne dans la base de données Access. Une fois l’ajout est terminé, un message sera affiché à l’utilisateur. where cin=7 "; 93333333333333p Année Universitaire : 2015/2016 Session : 2 ING Informat ique Matière : Atelier de développement L’enseignant est l’administrateur de l’application. Alors l’outil à développer doit lui donner la possibilité de faire le suivi d’un étudiant : Mini Projet C# Enoncé : On vous demande de développer une application Windows Form en C# qui permet aux enseignants de faire le suivi de leurs étudiants durant leur période d’étude. Le système développé doit aussi donner la possibilité de faire des impressions. L’application doit donner les possibilités aux enseignants : par module par semestre par année d’étude durant tout son cursus universitaire … (vous pouvez ajouter des autres fonctionnalités) d’ajout, de suppression, de modification et de recherche des étudiants et des modules. Un étudiant est caractérisé par son nom, son prénom, son CIN, son niveau d’étude, les modules étudiés, son nombre d’absence par module, ses notes par module,… Un module est caractérisé par son nom, son coefficient,… L’enseignant est caractérisé par son nom, son prénom, son grade,… Pour se connecter, l’enseignant doit indiquer un login et un mot de passe. L'enseignant peut aussi modifier son grade, le login et le mot de passe. 1