Académique Documents
Professionnel Documents
Culture Documents
Net
Formateur : Driouch Bouazza
Etablissement : OFPPT/CFMOTI 18/02/2010 V1.5 http://www.driouchb.0fees.net/
DRIOUCH B.
www.cfmoti.0fees.net
Plan
Dfinition (Gnralit, Architecture N-tier) (G ralit tier) Framework .Net / ADO.Net Connexion une BD (Connection) (Connection) Mode Connect (Commad, DataReader) Connect Commad, DataReader) Mode Dconnect (DataSet, DataAdapter) D connect DataSet, DataAdapter) Mode Dconnect (DataTable, Relation) D connect DataTable, Contrle utilisateur Utilisation Procdure Stocker et Transaction Proc DataSet Typ Typ dition des tats (CrystalReport) (CrystalReport) Dploiement
DRIOUCH B. www.cfmoti.0fees.net 2
Prsentation Pr
De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes contactent un serveur, une machine gnralement trs serveur, g tr puissante en terme de capacits d'entre-sortie, qui leur fournit capacit d'entr des services. Ces services sont des programmes fournissant des services. donnes telles que l'heure, des fichiers, une connexion, donn connexion, Les services sont exploits par des programmes, appels exploit appel programmes clients, s'excutant sur les machines clientes. On clients, s'ex parle ainsi de client FTP, client de messagerie, ..., lorsque l'on dsigne un programme, tournant sur une machine cliente, capable de traiter des informations qu'il rcupre auprs du r cup aupr serveur (dans le cas du client FTP il s'agit de fichiers, tandis que pour le client messagerie il s'agit de courrier lectronique).
DRIOUCH B. www.cfmoti.0fees.net 3
Fonctionnement
Un systme client/serveur fonctionne selon le syst schma suivant: sch
Le client met une requte vers le serveur grce son adresse et le port, qui dsigne un port, d service particulier du serveur Le serveur reoit la demande et rpond l'aide re r de l'adresse de la machine client et son port
DRIOUCH B. www.cfmoti.0fees.net 5
Architecture 2 et 3 niveaux
L'architecture deux niveaux caractrise les systmes caract syst clients/serveurs dans lesquels le client demande une ressource et le serveur la lui fournit directement. Dans l'architecture 3 niveaux (appeles architecture 3(appel 3tier), il existe un niveau intermdiaire, c'est--dire que l'on tier), interm c'esta gnralement une architecture partage entre: g partag Le client: le demandeur de ressources Le serveur d'application (appel aussi middleware): (appel middleware): le serveur charg de fournir la ressource mais faisant charg appel un autre serveur Le serveur secondaire (gnralement un serveur de (g base de donnes), fournissant un service au premier donn serveur
DRIOUCH B. www.cfmoti.0fees.net 6
Architecture multi-niveaux multiDans l'architecture 3 niveaux, chaque serveur (niveaux 1 et 2) effectue une tche (un service) spcialise. sp cialis Ainsi, un serveur peut utiliser les services d'un ou plusieurs autres serveurs afin de fournir son propre service. Par consquence, l'architecture cons trois niveaux est potentiellement une architecture N niveaux...
DRIOUCH B. www.cfmoti.0fees.net 7
Framework Dotnet
.NET est une plate forme complte pour dvelopper, dployer et excuter compl d d ex des applications Web, Windows, Mobiles et serveur. La plate forme repose forme sur la notion de framework qui est un cadre de travail offrant des outils et spcifications ncessaires pour dvelopper et dployer des applications. sp n d d Le Framework .NET est conu pour remplir les objectifs suivants : con
Fournir un environnement cohrent de programmation oriente objet que le coh orient code objet soit stock et excut localement, excut localement mais distribu stock excut excut distribu sur Internet ou excut distance. excut Fournir un environnement d'excution de code qui minimise le dploiement de d'ex d logiciels. Fournir au dveloppeur un environnement cohrent entre une grande varit de d coh vari types d'applications comme les applications Windows et les applications Web. applications Gnrer toutes les communications partir des normes d'industries pour s'assurer que le code bas sur le Framework .NET peut s'intgrer n'importe bas s'int quel autre code.
DRIOUCH B.
www.cfmoti.0fees.net
Composants de .Net
Le CLR (Common language Runtime) : il reprsente la machine virtuelle (Common Runtime) repr de la plate forme (un peu comme la JVM pour java). Il est responsable de responsable lexcution des applications et gre tous les aspects de scurit : le garbage ex g s curit Collector, la gestion des vnements etc. Collector, Un ensemble de librairie de classes : situe au dessus de la CLR, cette situ rubrique offre une couche pour la gestion des donnes. On y retrouve les donn Windows Forms (WinForms), ensemble de classes permettant la WinForms), conception dIHM pour Windows (un peu comme AWT ou Swing). d Adonet (Data and xml): une nouvelle gnration de composants d'accs aux xml): g d'acc bases de donnes donn Nous avons ASP.NET qui fournit un ensemble de classe pour la conception conception de site dynamique, la cration dIHM pour le web, les WebForms et la cr d conception de services web. Au sommet de la pile nous avons les langages supports par .NET tels C#, support VB.NET, C++, J# qui sont des produits de Microsoft et dautres tels que d Cobol, Delphi, etc ; .NET offre ainsi un choix de langage contrairement etc son concurrent J2EE.
DRIOUCH B. www.cfmoti.0fees.net 9
Composants de .Net
DRIOUCH B.
www.cfmoti.0fees.net
10
ADO.Net
Que nous apporte ADO .NET ? Une architecture plus optimise: Avec .Net, de nouveaux optimis fournisseurs de donnes voient le jour. Par exemple le .NET donn Framework comprend le fournisseur de donnes SQL Server donn .NET en mode natif via le namespace System.Data.SqlClient. Un meilleur support du mode dconnect : Aujourd'hui d connect Microsoft encourage le mode dconnect et propose des d connect classes spcialises supportant les deux modes : connect (via sp cialis connect l'objet DataReader) et dconnect (via l'objet DataSet). DataReader) d connect DataSet). Un meilleur support de XML : Le XML est utilis au sein du utilis Framework .NET comme le standard de description et de persistance des donnes. donn
DRIOUCH B. www.cfmoti.0fees.net 11
DRIOUCH B.
www.cfmoti.0fees.net
12
DRIOUCH B.
www.cfmoti.0fees.net
13
DRIOUCH B.
www.cfmoti.0fees.net
14
Cration de la connexion Cr
Pour dplacer des donnes entre une base de donnes et votre application, d donn donn vous devez disposer dune connexion pralable la base de donnes. Pour d pr donn crer une connexion une base de donnes, vous devez identifier le nom du cr donn serveur de base de donnes, le nom de la base de donnes et les informations donn donn de connexion requises. En fonction du type de base de donnes laquelle vous accdez, vous donn acc pouvez utiliser un objet SqlConnection ou OleDbConnection. Utilisez un OleDbConnection. objet SqlConnection pour la connexion aux bases de donnes SQL Server donn version 7.0 ou ultrieure et un objet OleDbConnection pour la connexion ult toutes les autres bases de donnes. donn Pour crer un objet SqlConnection, passez une chane de connexion qui cr SqlConnection, cha fournit les paramtres requis pour crer une connexion une source de param cr donnes. donn Dim strConn As String = data source=localhost ; initial catalog=GestStg ; data source=localhost catalog= integrated security=true security=true Dim conn As New SqlConnection(strConn) ) SqlConnection(strConn
DRIOUCH B. www.cfmoti.0fees.net 16
Cration de la connexion Cr
Paramtres de la chane de connexion Param cha
DRIOUCH B.
www.cfmoti.0fees.net
17
Exemple (Command)
Imports System Imports System.Data.SqlClient Public Class CommandeSQL Public Shared Sub Main() Dim strConnexion As String = "Data Source=localhost; Integrated Source=localhost; Security=SSPI; Initial Catalog=GestStg" Catalog= GestStg" Dim strRequete As String = "INSERT INTO Module VALUES (ADO.Net',3)" Try Dim oConnection As New SqlConnection(strConnexion) SqlConnection(strConnexion) Dim oCommand As New SqlCommand(strRequete, oConnection) SqlCommand(strRequete, oConnection) oConnection.Open() oConnection.Open() oCommand.ExecuteNonQuery() oCommand.ExecuteNonQuery() oConnection.Close() oConnection.Close() Catch e As Exception Console.WriteLine(("L'erreur suivante a t rencontre :" + e.Message)) rencontr e.Message)) End Try Console.readline() Console.readline() End Sub 'Main End Class 'CommandeSQL 'CommandeSQL
DRIOUCH B. www.cfmoti.0fees.net 19
Exercice
Raliser une application avec le schma relationnel suivant sch Stagiaire (IdStg, nomp, moyenne) (IdStg, nomp, Module (IdMod, Libelle, Coeff) (IdMod, Coeff) Note (IdStg, IdMod, Note) (IdStg, IdMod, Et la conception de fentre suivant (listeView, ComboBox) (listeView, ComboBox)
Page Accueille Menu
Modifier
Ajouter
Modifier
Ajouter
Ajouter
DRIOUCH B. www.cfmoti.0fees.net
Modifier
24
DRIOUCH B.
www.cfmoti.0fees.net
25
DataSet
La collection "DataTableCollection" "DataTableCollection" Cette collection peut contenir de zro n objets de type DataTable. Chaque z DataTable. objet DataTable reprsente une table d'une source de donnes. Chaque repr donn DataTable est constitue d'une collection Columns et d'une collection Rows constitu qui peuvent contenir respectivement de zro n objets DataRow et z DataColumn. DataColumn. La collection "DataRelationCollection" "DataRelationCollection" Cette collection peut contenir de zro n objets de type DataRelation. Un z DataRelation. objet DataRelation dfinit une relation parent-enfant entre deux tables parentpartir des valeurs des cls trangres. cl trang La collection "ExtendedProperties" "ExtendedProperties" Cette collection correspond un objet de type PropertyCollection qui peut contenir de zro n proprits dfinies par un utilisateur. Cette collection z propri d peut tre utilise afin de stocker des informations personnalises lies au utilis personnalis li DataSet utilis (date et heure de gnration des donnes, ordre select pass utilis g donn pass pour gnrer les donnes.). g donn
DRIOUCH B. 26
www.cfmoti.0fees.net
DataAdapter
Un objet DataSet doit tre capable d'interagir avec une ou plusieurs sources de donnes. Pour raliser cette action le framework Microsoft .Net fournit un objet donn r nomm DataAdapter. L'objet DataAdapter sert de liaison entre un objet nomm DataAdapter. DataSet et une source de donnes. Un fournisseur de donnes .NET va se donn donn servir d'un objet DataAdapter pour remplir de donnes un DataSet puis donn rpercuter les modifications ralises sur une source de donnes. Il est ralis donn possible de dfinir les actions r aliser par le DataAdapter en utilisant l'une d des quatre proprits suivantes. Chaque proprit excutera soit un ordre SQL propri propri ex soit une procdure stocke. proc stock
DRIOUCH B.
www.cfmoti.0fees.net
27
DataRelation
- Dfinition dune cl primaire: d cl MonData.tables("Stagiaire").PrimaryKey= MonData.tables("Stagiaire").PrimaryKey= New DataColumn(){MonData.tables("Stagiaire").Columns("IndexNom")} DataColumn(){MonData.tables("Stagiaire").Columns("IndexNom")} - En suppose que MonData est une dataSet avec les trois table de la base GestSTG Dim rel As DataRelation rel = New DataRelation("stgNote", MonData.Tables("Stagiaire").Columns("idstg"), DataRelation("stgNote", MonData.Tables("Stagiaire").Columns("idstg"), MonData.Tables("Note").Columns("idstg")) MonData.Tables("Note").Columns("idstg")) MonData.Relations.Add(rel) MonData.Relations.Add( rel) rel = New DataRelation("modNote", MonData.Tables("Module").Columns("idmod"), DataRelation("modNote", MonData.Tables("Module").Columns("idmod"), MonData.Tables("Note").Columns("idmod")) MonData.Tables("Note").Columns("idmod")) MonData.Relations.Add(rel) MonData.Relations.Add( rel) - Utilisation dune relation : d Dim LignesEnfants(), LigneVise As DataRow LignesEnfants(), LigneVis Dim rel As DataRelation = MonData.Tables("stagiaire").ChildRelations("StgNote") MonData.Tables("stagiaire").ChildRelations("StgNote") LigneVise = MonData.Tables("stagiaire").Rows(stg.CurrentCell.RowNumber) LigneVis MonData.Tables("stagiaire").Rows(stg.CurrentCell.RowNumber) LignesEnfants = LigneVise.GetChildRows(rel) LigneVise.GetChildRows(rel)
DRIOUCH B.
www.cfmoti.0fees.net
29
La mise jour de donnes avec un DataAdapter et un DataSet : donn La mthode Update de l'objet DataAdapter permet de rpercuter sur une m r source de donnes les modifications effectues dans un DataSet. Cette donn effectu DataSet. mthode admet un objet DataSet qui contient les donnes modifies et un donn modifi objet DataTable optionnel qui contient les modifications extraire. oSqlDataAdapter.Update(oDataSet) oSqlDataAdapter.Update( oDataSet) En ralit, lorsque la mthode Update est invoque l'objet DataAdapter ralit m invoqu analyse les modifications effectues au niveau de la collection DataRow. En effectu DataRow. fonction des modifications rencontres, les commandes InsertCommand, rencontr InsertCommand, UpdateCommand et DeleteCommand sont appeles par l'objet DataAdapter. appel DataAdapter.
DRIOUCH B. www.cfmoti.0fees.net 30
CommandBuilder
Aprs remplissage dun DataSet avec DataAdapter en utilisant lobjet SelectCommand, on peut utiliser les donne pour les traitements de MAJ (Ajouter, Modifier et supprimer), et a la fin des diffrent traitements il faut faire appelle une 2eme fois le DataAdapter pour rpercuter les modification du DataSet sur la base de donne source, qui fait appel au trois autre objet (InsertCommand, UpdateCommand et DeleteCommand) selon letat(ligne Ajouter, Modifier ou supprimer) de chaque ligne du DataTable utilis Pour effectuer cet opration, il faut construire les trois objets (InsertCommand, UpdateCommand et DeleteCommand), la difficult de leur construction nous fait appel a un autre objet CommandBuilder qui permet leur construction a partir de SelectCommand Utilisation de CommandBuilder Dim StgCon As New SqlConnection("Data source=.\SQLExpress; integrated security=true;initial catalog=GestStg") Dim StgDA As New SqlDataAdapter("", StgCon) Dim StgDS As New DataSet Dim StgCB As SqlCommandBuilder StgDA.SelectCommand = New SqlCommand("Select idstg,nom,moyenne from stagiaire", StgCon) StgDA.Fill(StgDS, "stg") Modification des donne dans le DataSet StgCB = New SqlCommandBuilder(StgDA) StgDA.Update(StgDS.Tables("stg"))
DRIOUCH B. www.cfmoti.0fees.net 32
DataRow et DataColumn
Utiliser un objet DataRow et ses proprits et mthodes pour extraire et propri m valuer les valeurs dun objet DataTable. Le DataRowCollection reprsente les d DataTable. repr objets DataRow rels prsents dans lobjet DataColumn qui dcrivent le pr l d schma de lobjet DataTable. La proprit Rows de lobjet DataTable fournit sch l DataTable. propri l un accs par programmation au DataRowCollection. La proprit Columns de acc DataRowCollection. propri lobjet DataTable fournit un accs par programmation au acc DataColumnCollection. DataColumnCollection. Dim col As DataColumn For Each col In ds.Tables(0).Columns LstItems.Items.Add(col.ColumnName) LstItems.Items.Add(col.ColumnName) Next le nombre de lignes ou de colonnes dun objet DataTable: d DataTable: ds.Tables(Authors).Rows.Count ds.Tables(Authors).Rows.Count ds.Tables(Authors).Columns.count ds.Tables(Authors).Columns.count accder ces champs par position ordinale (de base 0) Ou par nom : acc DataSet.Tables(0).Rows(x)(1) DataSet.Tables(0).Rows(x)(1) DataSet.Tables(0).Rows(x)(nom_champ) DataSet.Tables(0).Rows(x)(nom_champ)
DRIOUCH B. www.cfmoti.0fees.net 33
Try
Gestion Erreur
Dim conn As New SqlConnection() SqlConnection( Dim da As New SqlDataAdapter(, conn) SqlDataAdapter( conn) Dim ds As New DataSet() DataSet() Da.Fill(ds) Da.Fill(ds) Catch ex1 As System.Data.sqlClient.sqlException Select Case ex1.Number Case 17 LblErrors.Text = lblErrors.Text & (nom de serveur non valide) (nom valide) Case 156, 170 syntaxe SQL incorrecte LblErrors.Text = lblErrors.Text & (syntaxe incorrecte) incorrecte) Case 207 nom de champ incorrect dans select LblErrors.Text = lblErrors.Text & (nom de colonne non valide) (nom valide) Case 208 nom de table incorrect dans select LblErrors.Text = lblErrors.Text & (nom dobjet non valide) (nom d valide) Case 18452 LblErrors.Text = lblErrors.Text & (nom de lutilisateur non valide) nom l valide) Case 18456 LblErrors.Text = lblErrors.Text & (mot de passe non valide) valide) Case 4060 LblErrors.Text = lblErrors.Text & (base de donnes non valide) base donn valide) End Select Catch ex2 As System.Exception LblErrors.Text = lblErrors.Text & (Exception inattendue : & ex2.Message & , ) (Exception ) End Try
DRIOUCH B. www.cfmoti.0fees.net 34
Gestion Erreur
Lexemple suivant montre comment parcourir la collection Errors pour rechercher les dtails sur les erreurs SQLServer d survenues : Dim erData As SqlClient.SqlErrorCollection = ex1.Errors Dim i As Integer for i = 0 To erData.Count-1 erData.CountlbErrors.Text &= (Erreur & i & : & _ (Erreur erData(i).Number & , & _ erData(i).Class & , & _ erData(i).Message & Next i
DRIOUCH B. www.cfmoti.0fees.net 35
Exercice
Quel est le rsultat du code suivant : r
Dim r As DataRow Dim str As String For Each r in ds.Tables(Stagiaire).Rows ds.Tables(Stagiaire).Rows Str &=r(1) Str &=r(nom) &=r(nom) Next Dim dt as DataTable=ds.Tables(Stagiaire) DataTable= ds.Tables(Stagiaire) CBmtr.ValueMember = "idstg" "idstg" CBmtr.DisplayMember = "nom" "nom" CBmtr.DataSource = dt
Contrle Utilisateur(Composant)
En programmation, le terme composant est gnralement utilis pour dsigner un objet qui est rutilisable et qui peut interagir avec d'autres objets. Un composant doit dfinir des proprits la place de champs publics, car les concepteurs visuels, tels que Visual Studio .NET, affichent des proprits et non des champs dans la fentre de proprits. Les proprits sont comme des champs intelligents. Une proprit possde gnralement une donne membre prive accompagne de fonctions d'accesseur et est accde du point de vue syntaxique comme un champ d'une classe Voire Atelier UserControle (Horloge) sur la partie tlchargement du site http://www.driouchb.0fees.net
DRIOUCH B.
www.cfmoti.0fees.net
37
Atelier UserContrle
1- tape lancer VB.net et crer un projet de type "application Windows " et l'enregistrer sous le nom MonPremierControle Le VB.net cre un formulaire qui va servir pour tester notre Horloge 2- ajouter un contrle utilisateur vide
Lui affecter le nom Horloge.vb Question : quelle est la diffrence entre les deux classes Form1 et Horloge? 3- crer notre Horloge. On a besoin de deux contrles minimum, oui c'est a un label et un Timer. Ajoutons les alors. Aprs nous modifions les proprits du Timer pour qu'il rafrachir l'heure chaque seconde, donc il faut choisir comme intervalle 1000ms (millet seconde) et enabled true. est ce que c'est suffisant? Non, il faut l'activer pour que l'vnement Tick se dclenche chaque intervalle (ici 1000). Je rappelle que l'vnement tick se dclenche chaque 1000 seconde. Donc, ajouter une mthode et l'associer l'vnement tick (vous double cliquez sur le contrle Timer) Ajouter le code suivant: Label1.text="il est : " & Date.now
DRIOUCH B. www.cfmoti.0fees.net 38
Atelier UserContrle
4- tester le contrle. Pour tester le contrle, vous devez compiler le projet, et il va crer sur la boite d'outils votre contrle Horloge que vous pouvez insrer ensuite dans le formulaire 'Form1' Afficher le formulaire Form1 et regarder dans la palette des contrles, est ce que vous voyez votre contrle Ajouter la dans votre formulaire et excuter le (optionnel).
DRIOUCH B.
www.cfmoti.0fees.net
39
1.
2.
3. 4.
DRIOUCH B.
DRIOUCH B.
www.cfmoti.0fees.net
43
DRIOUCH B.
www.cfmoti.0fees.net
45
DRIOUCH B.
www.cfmoti.0fees.net
47
Dploiement (Install)
Il y as plusieurs mthode de publication( publication normal, avec projet de dploiement, autres outils externes) Dans la page de proprit de votre projet il y as une partie Publier quil faut configur avant le lancement de votre publication
Emplacement du dossier de publication : dossier de sortie Fichiers dapplication: ajouter les fichier de ressource de votre application (base de donne, image, Icon, ficher text, ) Composants requis: composant utilis dans votre application (rendre les outils utilis comme CrystalReport, SQLExpress, ) installable partir de votre application Mise a Jour: lapplication cherche la MAJ ou non(si oui indiqu le lien Web) Options : autres information
DRIOUCH B.
www.cfmoti.0fees.net
48
DRIOUCH B.
www.cfmoti.0fees.net
49