Vous êtes sur la page 1sur 19

Dveloppement et dploiement

dapplication client/serveur

A.KHALIL
Plan

Introduction
Intgrer les accs aux donnes dans le client en mode connect
Intgrer les accs aux donnes dans le client en mode
dconnect
Intgrer les composants et les transactions lapplication
Dploiement dapplication
Mode dconnect
C'est la grande nouveaut de l'architecture .net
Aprs une connexion et le chargement de donnes, tout se passe en
mmoire
Ceci libre les ressources du serveur de donnes, par contre le mcanisme
de cohrence et d'intgrit des donnes restent primordiales
Pour y parvenir, Dotnet propose un ensemble de classes : Une classe
gnrique, DataSet, est au centre du dispositif ; c'est cette classe qui
servira de conteneur en mmoire des tables et des requtes
Mode dconnect
DataSet
Lobjet DataSet reprsente une copie locale des donnes provenant dau
DataSet moins une source de donnes
Pour crer un DataSet il faut appeler le constructeur de l'objet DataSet
Relations en spcifiant un argument de nom
DataSet ds = new DataSet("CommandesClient");
Tables
Si vous ne spcifiez pas de nom pour l'objet DataSet, le nom par
Lignes dfaut est NewDataSet
Chaque DataSet est constitu dun ensemble de tables (et de relations)
Colonnes
Chaque table (dun Dataset) est constitue dun ensemble de lignes et de
colonnes
Mode dconnect
DataSet
L'utilisation d'un objet DataSet peut se faire via diffrentes mthodes qui
peuvent tre appliques indpendamment les unes des autres ou combines

Remplir l'objet DataSet de tables de donnes provenant d'une source de


donnes relationnelles existante l'aide d'un objet DataAdapter
Crer par programmation un objet DataTable, DataRelation et
Constraint dans un objet DataSet, puis remplir les tables de donnes
Charger et rendre persistent le contenu de l'objet DataSet l'aide de
XML
Mode dconnect
DataAdapter
L'objet DataAdapter sert de liaison entre un objet DataSet et une source de
donnes
Un fournisseur de donnes .NET va se servir d'un objet DataAdapter pour
remplir de donnes un DataSet puis rpercuter les modifications ralises sur
une source de donnes
Mode dconnect
DataAdapter
Il est possible de dfinir les actions raliser par le DataAdapter en utilisant
l'une des quatre proprits suivantes :
Proprit Description
SelectCommand permet de rcuprer des donnes d'une source de donnes
InsertCommand crit les lignes insres d'un DataSet vers une source de donnes
UpdateCommand crit les lignes modifies d'un DataSet vers une source de donnes
DeleteCommand efface les lignes supprimes d'un DataSet dans une source de donnes
La mthode Fill du DataAdapter permet d'extraire les donnes d'une
source de donnes en excutant la requte SQL spcifie dans la
proprit SelectCommand
Elle prend en paramtre le DataSet et le nom du DataTable remplir
avec les donnes retournes
Mode dconnect
Lecture de donnes et remplissage d'un DataSet
SqlConnection cnx=new SqlConnection("Data Source=.\\sqlexpress1;Initial Catalog=test12;Integrated
Security=True;Pooling=False");
DataSet ds = new DataSet("CommandesClient");
string req="select * from Table2";
SqlDataAdapter da = new SqlDataAdapter(req,cnx);
da.Fill(ds, "CommandesClient");
dataGridView1.DataSource = ds.Tables["CommandesClient"];
Ou :
SqlConnection cnx=new SqlConnection("Data Source=.\\sqlexpress1;Initial Catalog=test12;Integrated
Security=True;Pooling=False");
DataSet ds = new DataSet("CommandesClient");
string req="select * from Table2";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(req, cnx);
da.Fill(ds, "CommandesClient");
dataGridView1.DataSource = ds.Tables["CommandesClient"];
Mode dconnect
Mise jour de donnes avec un DataAdapter
La mthode Update de l'objet DataAdapter permet de rpercuter sur une
source de donnes les modifications effectues dans un DataSet
Cette mthode admet un objet DataSet qui contient les donnes modifies et
un objet DataTable optionnel qui contient les modifications extraire
da.Update(ds,"table");
Pour effectuer cet opration, il faut construire les trois objets
(InsertCommand, UpdateCommand et DeleteCommand), la difficult de
leur construction nous oblige faire appel a un autre objet
CommandBuilder qui permet leur construction partir de SelectCommand

SqlCommandBuilder cb = new SqlCommandBuilder(da);


Mode dconnect
Exemple de modification:
SqlConnection cnx = new SqlConnection(@"Data Source=.\sqlexpress1;Initial
Catalog=test12;Integrated Security=True;Pooling=False");
DataSet ds = new DataSet();
SqlDataAdapter da=new SqlDataAdapter("select * from Table2",cnx);
da.Fill(ds, "livres");
//Modification
for (int i = 0; i < ds.Tables["livres"].Rows.Count; i++)
{ if (textBox1.Text == ds.Tables["livres"].Rows[i][0].ToString())
{
ds.Tables["livres"].Rows[i][1] = textBox2.Text;
ds.Tables["livres"].Rows[i][2] = textBox3.Text;
ds.Tables["livres"].Rows[i][3] = textBox4.Text;
}}
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds, "livres");
Mode dconnect
Exemple de suppression:
SqlConnection cnx = new SqlConnection(@"Data Source=.\sqlexpress1;Initial
Catalog=test12;Integrated Security=True;Pooling=False");
DataSet ds = new DataSet();
SqlDataAdapter da=new SqlDataAdapter("select * from Table2",cnx);
da.Fill(ds, "livres");
//Supression
for (int i = 0; i < ds.Tables["livres"].Rows.Count; i++)
{ if (textBox1.Text == ds.Tables["livres"].Rows[i][0].ToString())
{
ds.Tables["livres"].Rows[i].Delete();
break;
}}
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds, "livres");
Mode dconnect
Exemple dinsertion:
SqlConnection cnx = new SqlConnection(@"Data Source=.\sqlexpress1;Initial
Catalog=test12;Integrated Security=True;Pooling=False");
DataSet ds = new DataSet();
SqlDataAdapter da=new SqlDataAdapter("select * from Table2",cnx);
da.Fill(ds, "livres");
//Insertion
DataRow dr = ds.Tables[" livres "].NewRow();
dr[0] = textBox1.Text;
dr[1] = textBox2.Text;
dr[2] = textBox3.Text;
dr[3] = textBox4.Text;
ds.Tables[" livres "].Rows.Add(dr);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds, "livres");
Mode dconnect
DataTable:
Pour crer une DataTable DataTable Matable = new DataTable("stagiaire");
Pour ajouter une DataTable un DataSet ds.Tables.Add(Matable);

DataColumn: DataColumn MaColonne = new DataColumn("idstg", typeof(int));


Matable.Columns.Add(MaColonne);

DataRow: DataRow ligne = Matable.NewRow();


Matable.Rows.Add(ligne);

DataRelation:
DataRelation rel;
rel= new DataRelation("stgnote", ds.Tables["stagiaire"].Columns["idstg"], ds.Tables["note"].Columns["idstg"]);
ds.Relations.Add(rel);
Mode dconnect
DataSet et XML:
XML est un format de source de donne quon peut utiliser pour exporter et
importer les donnes dun DataSet
Si on prend lexemple dun DataSet (rempli):
o Pour lenregistrer sous format XML

ds.WriteXml("biblio.xml");
o Pour lenregistrer sous format XML avec schma
ds.WriteXml("biblio.xml", XmlWriteMode.WriteSchema);
o Pour remplir un DataSet partir dun fichier XML
DataSet ds2 = new DataSet();
ds2.ReadXml("ex.xml");
Ou
ds2.ReadXml("ex.xml ", XmlReadMode.ReadSchema);
Mode dconnect
Exercice 4:
Crer une feuille contenant deux grilles : personnes et loisirs
Les deux grilles doivent tre remplies, lors du chargement de la page, partir
dun dataSet contenant deux tables (personne et loisir)
Une troisime table du dataSet est prvue pour assurer la liaison entre les
deux premire tables
Le dataSet doit tre cr, et rempli entirement en utilisant les objets
DataTables, DataColumn, DataRow et DataRelation
Grer ensuite les vnement, telle que la slection dune personne permet
dafficher ses loisirs, et la slection dun loisir permet dafficher les personnes
correspondantes
Mode dconnect
Exercice 4:
Mode dconnect
Exercice 5:
Crer la BD correspondante au schma suivant:
Mode dconnect
Exercice 5:
Crer le formulaire suivant:
Mode dconnect
Exercice 5:
Pour remplir les combobox penser utiliser les proprits: DataSource,
DisplayMember et ValueMember
Linsertion, la modification et la suppression des morceaux seffectuent
directement via la grille
Les rsultats de la recherche (par Artiste ou par Catgorie) saffichent dans la
grille
Le boutton Mettre jour la BD permet de rapporter toutes les
modifications effectues sur le DataSet vers la base de donnes

Vous aimerez peut-être aussi