Objectif Général N°5: Manipuler une base de données.

publicité
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
Téléchargement