Вы находитесь на странице: 1из 26

ELGARRAI Zineb 2010-2011

Le mode dconnect rpondant mieux aux exigences dconnect, actuelles en termes d'accs aux donnes, comporte un certain nombre d'objets visant un mme but: d objets "Effectuer une connexion l plus t d possible et se "Eff t i le l tard ibl t dconnecter le plus tt possible aprs avoir interagi avec les donnes"

Les objets connects travaillent directement avec la base de donnes, donnes ils doivent implmenter un code spcifique chaque type ou format de base de donnes. Ainsi, les objets connects sont lis un fournisseur d'accs aux donnes .NET (ou .NET Data Provider). Il existe donc un objet SqlConnection pour se connecter une base SqlServer et un objet OracleConnection. j Les objets dconnects, eux, sont indpendants du format de j , , p la base de donnes. De ce fait les mmes objets peuvent tre utiliss pour une base SqlServer ou Oracle
3

Dataset DataAdapter

Lobjet DataAdapter permet de relier un DataSet une b S base d d de donnes. Le DataAdapter change suivant le fournisseur, c'estdire, par exemple, pour une base de donnes SQL, ce sera SqlDataAdapter.

Il faut tout dabord instancier le dataAdapter p correspondant votre fournisseur. Il a besoin dune commande pour fonctionner. Par exemple : Dim Adapter As New q p ( p y , SqlDataAdapter("SELECT * FROM Employe", connexion) Crer des commandes pour un DataAdapter p p Il est possible dajouter plusieurs commandes un DataAdapter. Pour cela, il suffit de crer votre Pou ce a, su t c e vot e commande puis de lajouter votre DataAdapter.

Exemple: Dim ModifierNom As New SqlCommand("UPDATE Employe SET Prenom = 'Jeremie' WHERE Prenom='Jeremy'") Adapter.UpdateCommand = M difi N Ad pt Upd t C d ModifierNom La proprit SelectCommand du DataAdapter est un objet Command qui extrait les donnes de la source de donnes. Les proprits InsertCommand, UpdateCommand et DeleteCommand du DataAdapter sont des objets Command qui grent les mises jour dans la source de donnes conformment aux modifications faites dans le DataSet DataSet.

cest l'objet central du mode dconnect. On peut cerner un DataSet de diverses manires: p Une mini base de donnes relationnelle, avec tables et relations. Par rapport la base de donnes de rfrence un DataSet peut rfrence, comporter une partie des tables, avec chacune tout ou partie des colonnes ou des lignes, avec ou sans les relations d'origine, ou bien encore avec d' d'autres relations. l i Un ensemble de donnes dont la structure peut tre exprime sous forme SQL. Un DataSet est indpendant du fournisseur d'accs aux donnes et donc du format de ces donnes. Le DataSet, passe par l'intermdiaire d'un DataAdapter et n'interagit pas directement avec la base de donnes. g p
10

Cest un cache de donnes en mmoire, c'est--dire quil permet d stocker t t de t k temporairement d d i t des donnes utilises d tili dans lapplication. Le DataSet contient la collection dobjets DataTable qui d objets peuvent tre lis avec les objets DataRelation. Dans le cas du mode dconnect cet objet va nous permettre dconnect, d'importer la partie dsire de la base de donnes en local. Ainsi grce des objets ncessaires la connexion classique (commande select, connections string...) et un DataAdapter, nous pourrons relier ("Binder") un DataSet sur une base de p donne (en lecture et en criture grce une mthode de mise a jour de la base de donne).
11

12

j Objet DataTable

p Description Correspond une table Contient une table. collection de DataColumn et de DataRow. Reprsente une colonne de la table. Correspond un enregistrement de la table.

DataColumn DataRow

13

La cration dun DataSet peut se faire via plusieurs mtho des : On peut le crer par programmation en crant des objets DataTable, DataRelation (facultatif). Il suffit ensuite de remplir l ou les base(s) de donnes. Vous pouvez aussi utiliser le mode assistant Vous pouvez aussi glisser directement un DataSet depuis la Toolbox sur votre Form (cas pour le WinForm).

14

Crer un DataSet :Il faut en premier lieu les instancier Dim DataSet1 As New DataSet() Ajouter des DataTable vous pouvez des DataTable au Dataset cre : Dim Employe As New DataTable Dim Role As New DataTable DataSet1.Tables.Add(Employe) ( p y ) DataSet1.Tables.Add(Role)

15

Le DataRelation Il reprsente le lien entre pl sie rs tables Dans un DataSet il permet plusieurs tables. n DataSet, la relation entre les colonnes de plusieurs DataTable. Par exemple, nous pouvons lier les colonnes ID et Role de nos tables Employe et p p y Role : Exemple 1: Dim R1 As New DataRelation ("R1",Table1.ParentColumns("Role"), Table1.Columns("ID")) DataSet1.Relations.Add(R1) DataSet1 Relations Add(R1) Exemple 2: DataSet1 Relations Add("R1", DataSet1.Relations.Add( R1 DataSet1.Tables("Tab1").Columns("IDT1"),DataSet1.Tables("Tab2" ).Columns("IDT2"))
16

Le fait d'ajouter un DataRelation un objet DataSet ajoute, par dfaut, un objet UniqueConstraint la table parente et un objet ForeignKeyConstraint la table enfant. Ensuite, vous pouvez naviguer entre les colonnes de vos tables. Le DataRow L D R propose d deux mthodes : l G P h d le GetParentRow et l R le GetChildRows :
Mthode GetParentRows GetChildRows Description Permet dobtenir les lignes parentes dun DataRow attach un DataRelation. Permet dobtenir les lignes enfants dun DataRow attach un DataRelation.

Exemple: afficher les ID de notre prcdente relation "EmployeRole": Dim IdCorrespondant As DataRow = ID.GetParentRow("FK_Employe_Role")

17

Valeur Add

La mthode Merge permet de fusionner deux DataSet entre eux. On prend un D t S t so rce q on f sionne a ec un D t S t cibl n DataSet source quon fusionne avec n DataSet cibl. Pour des tables identiques, ce sont les donnes du DataSet source qui remplaceront les donnes du DataSet cibl Lorsquil sagit de cibl. Lorsqu il s agit deux DataSet diffrents, vous pouvez paramtrer la mthode Merge avec la proprit MissingSchemaAction. Voici les diffrentes valeurs p p g de ce paramtre :
Description Permet d ajouter les objets contenus dans le DataSet source dajouter dans le DataSet cibl. Permet dajouter les objets contenus dans le DataSet source dans le DataSet cibl avec les cls primaires. Une exception sera leve si le mappage dune colonne dans les DataSet source et cibl est manquante. manquante Toutes les colonnes du DataSet source supplmentaire sont ignores.

AddWithKey Error Ignore

18

Vous pouvez par exemple vouloir modifier pour une srie de test un DataSet. Pour cela, il est trs simple de copier un DataSet. Il suffit dutiliser la mthode Copy : Dim DataSetCopie As New DataSet DataSetCopie = DataSet1.Copy DataSet1 Copy

19

La mthode Update de l'objet DataAdapter est appele pour rpercuter les modifications provenant d'un objet DataSet dans la source de donnes. La mthode Update, comme la mthode Fill, prend comme arguments une instance d'un DataSet et un objet DataTable optionnel ou un nom D t T bl ti l DataTable. Lorsque vous appelez la mthode Update, le DataAdapter analyse les modifications apportes et excute la commande approprie (INSERT, UPDATE ou DELETE). Lorsque le DataAdapter trouve une modification dans un objet DataRow, il utilise InsertCommand, UpdateCommand ou DeleteCommand pour traiter la modification.
20

La proprit InsertCommand UpdateCommand ou InsertCommand, DeleteCommand doit tre dfinie avant que la mthode Update du DataAdapter ne soit appele en fonction appele, des modifications qui ont t apportes aux donnes dans l objet DataSet. l'objet DataSet

21

1- La premire tape : Dim DtSet As New DataSet() correspond la cration d'un DataSet appel DtSet de type 22 La de ime tape deuxime Dim AdapTContact As New OleDb.OleDbDataAdapter("select * from employe", Connection) p y ) cre une instance de l'objet OleDbDataAdapter 3- La troisime tape AdapTContact.Fill(DtSet, "employe") Ad TC t t Fill(DtS t " l ") permet de remplir le DataSet DtSet l'aide de l'objet AdapTContact, qui n'est autre qu'un DataAdapter adapt notre p q q p p situation particulire. 4- La dernire tape : exemple: Afficher les informations dans un Datagridview: G1.DataSource = DtSet.Tables("employe") Avec G1 le nom du datagridview
22

23

C est Cest la mthode de rcupration des donnes vers le dataset.Il existe plusieurs versions surcharges, mais seules deux sont gneralementutiliss selon que la cible sera un dataTable simple ou un dataset plus complexe

24

25