Vous êtes sur la page 1sur 17

M22 : Programmation C/S ADO.

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

Avantages / Inconvnients Inconv


Le modle client/serveur est particulirement mod particuli recommand pour des rseaux ncessitant un grand recommand r n niveau de fiabilit, ses principaux atouts sont: fiabilit
des ressources centralises centralis une meilleure scurit s curit une administration au niveau serveur un rseau volutif r

L'architecture client/serveur a tout de mme quelques lacunes parmi lesquelles:


un cot lev co lev une maillon faible
DRIOUCH B. www.cfmoti.0fees.net 4

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

Choix d'un fournisseur de donnes .NET donn


Pour pouvoir faire appel aux classes proposes par ADO .Net il est propos ncessaire d'inclure une rfrence l'espace de noms correspondant. Vous r pouvez soit inclure l'espace System.Data soit inclure des classes de cet espace comme System.Data.OleDb ou System.Data.SqlClient ; tout dpend d de la source de donnes utilise. donn utilis
'Inclusion d'un namespace imports System.Data Imports System.Data.SqlClient

DRIOUCH B.

www.cfmoti.0fees.net

12

Le modle objet ADO .NET mod

DRIOUCH B.

www.cfmoti.0fees.net

13

Le modle objet ADO .NET mod


Regardons de plus prs chacun de ces objets. pr

DRIOUCH B.

www.cfmoti.0fees.net

14

Connexion une base de donnes donn


Modes de connexion Lvolutions dADO.Net est plus importante du cot mode volutions d cot dconnect afin de soulager d'une part le serveur BD et d'autre connect part d'pargner la bande passante, Le mode "dconnect" permet connect d' "d au client d'effectuer des fonctions telles que le tri, le filtrage, sans filtrage, avoir recours au serveur, grce une copie locale des donnes. donn L'avantage du mode "dconnect" sur le mode "connect" est "d connect "connect vident, ce dernier utilisant une connexion permanente avec la base de donnes. donn Ce qui nous permet davoir deux modes de connexion (Mode d connect et Mode dconnect) connect d connect
DRIOUCH B. www.cfmoti.0fees.net 15

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

Accs aux donnes en mode Acc donn connect connect


Lobjet Command
Une fois la connexion vers une base de donnes effectue, vous donn effectu pouvez excuter une requte et rcuprer son rsultat en utilisant ex r cup r l'objet Command. La cration d'un objet Command ncessite cr n l'instanciation d'un objet SqlCommand. Cet objet expose SqlCommand. diffrentes mthodes Execute utiliser selon le rsultat attendu : diff m r La mthode ExecuteReader peut tre utilise pour rcuprer un m utilis r cup jeu d'enregistrements et retourne un objet DataReader. DataReader. La mthode ExecuteScalar rcupre une valeur unitaire. m cup La mthode ExecuteNonQuery excute une commande ne m ex retournant pas de lignes.
DRIOUCH B. www.cfmoti.0fees.net 18

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

Mode connect connect


lobjet DataReader
L'objet DataReader permet de rcuprer d'une source de donnes r cup donn un flux en lecture seule en avant seulement (read only, forward (read only, only). Il rsulte de l'excution de la mthode ExecuteReader only). r l'ex m sur un objet Command. L'objet DataReader ne stocke en mmoire qu'une seule ligne la m fois, permettant ainsi d'augmenter les performances d'une application et d'en rduire la charge. r Il est recommand d'utiliser cet objet si : recommand
Vous n'avez pas besoin de raliser un cache des donnes r donn Vous traitez un jeu d'enregistrements trop important pour tre stock en stock mmoire Vous souhaitez accder des donnes rapidement en lecture seule en acc donn avant seulement
DRIOUCH B. www.cfmoti.0fees.net 20

Mode connect connect


Par dfaut, un DataReader charge une ligne entire en d enti mmoire chaque appel de la mthode Read. Il est possible m Read. d'accder aux valeurs de colonnes soit par leurs noms soit par d'acc leurs rfrences ordinales. Une solution plus performante est r propose permettant d'accder aux valeurs dans leurs types de propos d'acc donnes natifs (GetInt32, GetDouble, GetString) Par exemple donn GetDouble, GetString) si la premire colonne de la ligne indice par 0 est de type int, premi indic int, alors il est possible de la rcuprer l'aide de la mthode r cup m GetInt32 de l'objet DataReader. DataReader. La mthode Close ferme un objet DataReader. Prcisons que m DataReader. Pr si l'objet Command utilis contient des paramtres en sortie ou utilis param des valeurs de retours, ils ne pourront tre rcuprs qu'a r cup l'issue de la fermeture du DataReader. DataReader.
DRIOUCH B. www.cfmoti.0fees.net 21

Exemple (DataReader) (DataReader)


'Cration de la connexion et de lobjet Command 'Cr l Dim conn As New SqlConnection("data source=localhost\SQLExpress ; source=localhost\ integrated security=true ; initial catalog=GestStg") Dim cmdStg As New SqlCommand("select * from Stagiaire", conn) conn.Open() 'Cration dun DataReader et affichage des donnes 'Cr d donn Dim dr As SqlDataReader dr = cmdStg.ExecuteReader() Do While dr.Read() Console.WriteLine(dr("nom") & " - " & dr("moyenne")) Loop 'Fermeture de DataReader et de la connexion dr.Close() conn.Close() Console.ReadLine()
DRIOUCH B. www.cfmoti.0fees.net 22

Gestion des erreurs


Lors de lutilisation de connexions avec lobjet DataReader, vous devriez l l DataReader, toujours utiliser une instruction TrycatchFinally pour garantir la Try catch fermeture des connexions en cas dchec quelconque. Sinon, la connexion dchec peut demeurer indfiniment ouverte. ind Le code suivant dun objet DataReader intercepte des erreurs et ferme la d connexion
Try Conn.Open() Conn.Open() Dr = cmdStg.executeReader() cmdStg.executeReader() utilisation des donnes retournes dans les dataReader donn retourn Catch e As Exception Gestion de lerreur l Finally Dr.close() Dr.close() Conn.close() Conn.close() End Try
DRIOUCH B. www.cfmoti.0fees.net 23

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

Liste Stagiaire Supprimer

Liste Module Supprimer

Modifier

Ajouter

Liste Note/Module Supprimer

Modifier

Ajouter

Ajouter
DRIOUCH B. www.cfmoti.0fees.net

Modifier
24

Mode Dconnect D connect


DataSet: DataSet:
Lobjet DataSet reprsente une copie locale des donnes provenant dau repr donn d moins une source de donnes. Lobjet DataSet peut utiliser un objet donn L DataAdapter pour charger des donnes partir dune source de donnes et donn d donn peut se dconnecter ensuite de cette dernire. Lutilisateur peut ensuite d derni L utiliser et manipuler les donnes. Lorsque les donnes doivent tre mises donn donn jour dans la source de donnes, un objet DataAdapter est utilis pour se donn utilis reconnecter la source de donnes et la mettre jour. donn

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

DataTable (AutoIncrement) AutoIncrement)


Dim MaTable As new DataTable Ajout de colonne Dim MaColonne As New DataColumn("id", "System.int") DataColumn("id", "System.int") With MaColonne .Unique = True .AutoIncrement = True .AllowDBNull = False .ReadOnly = True End With MaTable.Columns.Add(MaColonne) MaTable.Columns.Add(MaColonne) MaColonne = New DataColumn("nom", "System.string") DataColumn("nom", "System.string") MaTable.Columns.Add(MaColonne) MaTable.Columns.Add(MaColonne) Ajout de ligne Dim MaLigne As DataRow MaLigne = MaTable.NewRow MaLigne("nom") = " Ali" MaLigne("nom") MaTable.Rows.Add(MaLigne) MaTable.Rows.Add(MaLigne)
DRIOUCH B. www.cfmoti.0fees.net 28

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

Remplissage d'un DataSet


La mthode Fill de l'objet DataAdapter permet d'extraire les donnes d'une m donn source de donnes en excutant la requte SQL spcifie dans la proprit donn ex spcifi propri SelectCommand. Elle prend en paramtre le DataSet et le nom du DataTable SelectCommand. param remplir avec les donnes retournes. donn retourn
' Cration d'un objet SqlDataAdapter Cr Dim oSqlDataAdapter As New SqlDataAdapter("select * from Stagiaire", oConnection) Stagiaire", oConnection) Dim oDataSet As New DataSet(Stagiaire") DataSet( Stagiaire") oSqlDataAdapter.Fill(oDataSet, " Stagiaire") oSqlDataAdapter.Fill(oDataSet, Stagiaire")

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

Cration dun DataSet Cr d


Pour crer une copie locale dune base de donnes, crez et remplissez un cr d donn cr objet DataSet au moyen dobjets DataTable. Pour crer un objet DataSet, d DataTable. cr DataSet, vous devez dabord dclarer le nom de lobjet DataSet. Le code suivant cre d d l DataSet. cr un objet DataSet nomm ds : Dim ds As New DataSet() nomm DataSet() Remplissage du DataSet Aprs avoir cre un objet DataSet, remplissez les objets DataTable en crant Apr cr DataSet, cr un objet DataAdapter. Vous pouvez appeler la mthode Fill de lobjet DataAdapter. m l DataAdapter, puis prciser lobjet DataTable remplir. Le code suivant DataAdapter, pr l remplit la table Authors (Auteurs) de lobjet DataSet intitul ds en utilisant un l intitul DataAdapter nomm da : da.Fill(ds,Stagiaire) nomm da.Fill( ds,Stagiaire) Accs un DataTable Acc chaque objet DataSet se compose dau moins un objet DataTable que vous d pouvez rfrencer par nom ou par position ordinale : r ds.Tables(Authors) ds.Tables( Authors) -OuOuds.Tables(0) ds.Tables(0)
DRIOUCH B. www.cfmoti.0fees.net 31

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

Reproduire la Srie M22 N1 en mode dconnect. S d connect


DRIOUCH B. www.cfmoti.0fees.net 36

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

Intgrer les Transactions Int


Les transactions sont des groupes d'oprations combines en units de travail logiques. Elles sont utilises pour contrler et conserver la cohrence et l'intgrit de chaque action d'une transaction, malgr les ventuelles erreurs rencontres sur le systme. Avec un SGBDR qui prend en charge la gestion des transactions vous pouvez crer des transactions explicites l'aide d'instructions SQL BEGIN TRANSACTION, COMMIT TRANSACTION ou ROLLBACK TRANSACTION Pour effectuer une transaction : Appelez la mthode BeginTransaction de l'objet SqlConnection pour marquer le dbut de la transaction. La mthode BeginTransaction retourne une rfrence la transaction. Assignez l'objet Transaction la proprit Transaction du SqlCommand excuter. Si une commande est excute sur une connexion sur laquelle une transaction est active et si l'objet Transaction n'a pas t affect la proprit Transaction de l'objet Command, une exception est leve. Excutez les commandes requises. Appelez la mthode Commit de l'objet SqlTransaction pour terminer la transaction, ou la mthode Rollback pour l'annuler. Si la connexion est ferme ou libre avant que l'une des mthodes Commit ou Rollback ait t excute, la transaction est annule.
www.cfmoti.0fees.net 40

1.

2.

3. 4.

DRIOUCH B.

Intgrer les Transactions (Exp) Exp) Int


Dim connection As SqlConnection = New SqlConnection(connectString) connection.Open() ' Dbut dune transaction local. Dim sqlTran As SqlTransaction = connection.BeginTransaction() ' liaison du command avec la transaction courante. Dim command As SqlCommand = connection.CreateCommand() command.Transaction = sqlTran Try command.CommandText = "INSERT INTO Stagiaire(Nom) VALUES('Ali')" command.ExecuteNonQuery() command.CommandText = "INSERT INTO Stagiaire(Nom) VALUES('Ahmed')" command.ExecuteNonQuery() sqlTran.Commit() Console.WriteLine("Les deux enregistrement sont inscrit dans la base de donne") Catch ex As Exception Console.WriteLine(ex.Message) Console.WriteLine("Auquune enregistrement nest inscrit.") sqlTran.Rollback() End Try NB: Pour une utilisation avanc des transaction, cherche lutilisation des transaction distribu avec lAPI dans le name space System.Transaction
DRIOUCH B. www.cfmoti.0fees.net 41

Excution Procdure Stock


Puisque lutilisation des procdures stock avec les SGBDR est profitable avec la centralisation de tous le code SQL au niveau du SGBD, il faut pas nglig leur utilisation dans une application client serveur (ADO.Net), les mmes objets pour excuter une instruction SQL sont rutilis pour lexcution dune procdure stock, en plus dun objet Parameter pour dfinir explicitement les paramtres une PS Exp:soit AffNote une procdure qui affiche la liste des notes dun stagiaire donne ne paramtre
Dim conn As New SqlConnection("data source=.\SQLExpress;initial catalog=GestStg; integrated security=true") Dim cmd As New SqlCommand("AffNote", conn) cmd.CommandType = CommandType.StoredProcedure ' Cration d'un paramtre en entre Dim oParam As SqlParameter = cmd.Parameters.Add("@idstg", SqlDbType.Int, 32, "idstg") oParam.Value = "1" conn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader While dr.Read Console.WriteLine("{0} : " & ControlChars.Tab & "{1}", dr("libelle"), dr("note")) End While dr.Close() conn.Close() Console.Write("Presse une touche ....") Console.ReadKey()
DRIOUCH B. www.cfmoti.0fees.net 42

les schmas XSD (DataSet typ) sch (DataSet typ


Le DataSet est en fait un fichier XML qui dfinit les diffrentes tables qui composeront les sources de donne de votre travail (ComboBox, DataGrid, CrystalReport). Ce qui vite tout problme li au changement de connexion a la base de donn. Pour a en ajoute un nouveau lment dans le projet de type DataSet (ext xsd), aprs en ajoute des tables via une connexion dans lexplorateur de serveur, ou bien, en ajoute un nouveau DataAdapter avec une requte SQL spcifique et une chane de connexion, un DataTable sajoute automatiquement, avec un assistant qui permet de crer les autres objets du DataAdapter (InsertCommand, DeleteCommand, UpdateCommande)

DRIOUCH B.

www.cfmoti.0fees.net

43

tats (CrystalReports) (CrystalReports)


Dans toute application en a besoin de rapport de sortie imprimable, soit des rapports imprimable, de listing, de calcule ou de graphe. Pour a en ajoute un nouveau lment de type CrystalReport (ext rpt), dans rpt), lexplorateur des champs en peut tous paramtr, champs de base de donne, champs paramtr donn de formule, champs de paramtre, champs de nom de groupe, champs de total cumul param cumul et autre. Exemple : pour avoir un tat de tous les stagiaires avec leur notes et matire, en mati commence par paramtr le champs base de donne avec le DataSet typ, en paramtre paramtr donn typ param le champs de nom de groupe pour spcifi le regroupement par id_stg et en glisse les spcifi lments dont en a besoin sur le CrystalReport, pour affich ce rapport, il faut utilis un CrystalReport, affich utilis CrystalReportViewer dans une Forms et ajout le code suivant au dmarrage de la ajout d Forms: Forms: Imports GestionSTG.DSetTableAdapters Dim DS As New DSet instanciation du dataSet Dim DAstg As New stagiaireTableAdapter Dim DAmat As New matiereTableAdapter Dim DAnot As New noteTableAdapter Dim etatn As New EtatNote DAstg.Fill(DS.stagiaire) remplisssage des Datatables dans le DataSet DAmat.Fill(DS.matiere) DAnot.Fill(DS.note) etatn.SetDataSource(DS) lien entre CR et DataSet CrystalReportViewer1.ReportSource = etatn lien entre CRViewer et CR
DRIOUCH B. www.cfmoti.0fees.net 44

tats (CrystalReports) (CrystalReports)


Pour afficher un seule relev pour un seule stagiaire, il faut travailler le champs de paramtre pour crer un paramtre. Donnez lui un nom et un type Click droit dans un emplacement vide dans le rapport pour affiche lExpert Slection, aprs le chois de llment cliquez sur OK pour prcis lgalit entre llment slectionn et le paramtre crer

DRIOUCH B.

www.cfmoti.0fees.net

45

tats (CrystalReports) (CrystalReports)


Et pour le programme, il faut faire les changement suivant pour prendre en considration le paramtre:
Imports GestionSTG.DSetTableAdapters Dim DSet1 As New DSet Dim MatiereTableAdapter1 As New matiereTableAdapter Dim StagiaireTableAdapter1 As New stagiaireTableAdapter Dim NoteTableAdapter1 As New noteTableAdapter Dim releve As New ReleveSTG Dmarrage de la fentre avec CrystalReportViewer Me.MatiereTableAdapter1.Fill(DSet1.matiere) Me.StagiaireTableAdapter1.Fill(DSet1.stagiaire) Me.NoteTableAdapter1.Fill(DSet1.note) Me.releve.SetDataSource(DSet1) releve.SetParameterValue("idstg", idstg) idstg: valeur du paramtre Me.CrystalReportViewer1.ReportSource = releve
DRIOUCH B. www.cfmoti.0fees.net 46

tats (CrystalReports) (CrystalReports)


Finalement en peut accompagn notre rapport par un diagramme (Histogramme) Click droit-> Insertion Exmp: Note par Module dans relev Stagiaire.

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

Vous aimerez peut-être aussi