ADO.Net: Travailler en mode non connecté

Programming, ADO.Net, Data Handling · course

Voir tous les documents en programmation

Chapitre 6:

ADO.Net : Travailler en mode

non connecté

1

Le mode non connecté

Le mode non connecté :

• Pas de connexion permanente avec la source

de données.

• La connexion est établie, les données sont

extraites puis la connexion est coupée.

Il faut conserver localement les données sur

lesquelles on veut travailler.

2

Le mode non connecté

• Principe: recréer, à l’aide de différentes classes,

une organisation similaire à celle d’une base de

données :

– DataSet : ≈ BD

– DataTable : ≈ table d‘une BD

– DataRow : ≈ ligne d‘une table (un enregistrement)

– DataColumn : ≈ colonne d‘une table (champ)

– UniqueConstraint : ≈ clé primaire d‘une table

– ForeignKeyConstraint : ≈ clé étrangère d‘une table

– DataRelation : un lien Parent/Enfant entre 2

DataTable

3

Classes du mode non connecté

4

DataAdapter

• Travailler localement avec des données 

Charger les données depuis une BD vers un

DataSet (c’est une représentation en mémoire

des données)

• Chaque fournisseur fournit une classe 

DataAdapter : assure le dialogue entre BD et

DataSet :OleDbDataAdapter, SqlDataAdapter,..

• DataAdapter assure les échanges de données :

– De la BD vers le DataSet (remplir le DataSet)

– Du DataSet vers la BD (mettre a jour la BD)

5

DataAdapter

• DataAdapter nécessite une connexion

(OleDbConnection) pour contacter le serveur

et une ou plusieurs commandes

(OleDbCommand) pour le traitement des

données.

6

Remplissage d‘un DataSet

Publicité

Avec du code

7

DataAdapter : BD  DataSet

Etapes pour le remplissage d‘un DataSet :

1. Créer un objet OleDbConnection (e.g. cn)

2. Créer un objet OleDbCommand basé sur une requête SQL

SELECT (e.g. cmd1)

3. Creer un objet OleDbDataAdapter (e.g. da1)

4. Affecter l‘objet cmd1 à la propriété SelectCommand de

l‘objet OleDbDataAdapter (e.g.

da1.SelectCommand=cmd1)

• NB. Un DataAdapter possède aussi les propriétés :

InsertCommand, UpdateCommand et DeleteCommand

(pour le cas DataSet  BD )

5. Creer un objet DataSet (e.g. ds)

6. Appeler la méthode Fill du dataAdapter pour remplir le

DataSet créé avec le résultat de l‘exécution de la

commande SelectCommand du DataAdapter (e.g.

da1.Fill(ds, "srcTable"))

8

Méthode Fill

• objDataAdapter.Fill (nom_DataSet,

"src_Table")

nom_DataSet : le data set à remplir

src_Table : nom de la DataTable à remplir avec

les données retournées.

 Fill : Ajoute ou actualise les lignes de

src_Table de nom_DataSet pour qu'elles

correspondent à celles de la source de

données

9

Méthode Fill

• Remarques :

• Si src_Table n’existe pas dans le DataSet, une DataTable

sera créée sinon la méthode Fill utilisera la structure

existante.

• Lorsque le DataAdapter construit la DataTable, les

noms des champs de la base sont utilisés pour nommer

les DataColumn

• Un DataSet peut contenir plusieurs DataTable créées a

partir de DataAdapter différents.

• La méthode Fill ne transfère pas les contraintes de clés

primaires : il faut ajouter l‘ins° :

da1.MissingSchemaAction=MissingSchemaAction.AddWithKey

10

Exemple 1 : récupérer tous les clients

11

Exemple 1 : récupérer tous les clients

Publicité

'Indiquer au ListBox d'afficher la table Clients

'Indiquer quelle

colonne afficher

12

Remplissage automatique (Binding)

d‘une ListeBox par un DataSet

13

Exemple 2

Rq: C'est DataSource qui déclenche le

chargement de la ListBox avec la prise en

compte de DisplayMember et ValueMember.

récupérer le «

Contact » quand

l'utilisateur

clique sur le «

Code Client

14

Exemple 2

Quand l'utilisateur clique sur une

ligne de la ListBox, cela déclenche

l'évènement

lstCodes_SelectedIndexChanged, là

on récupère la valeur du « Contact

» qui se trouve dans

lst_Codes.SelectedValue

15

Remplissage automatique (Binding)

d‘un DataGridView par un DataSet

16

Exemple 3 : Afficher tous les clients

dans un dataGridView

17

Exemple 3 (résultat)

18

Navigation entre les

enregistrements

19

Collection Rows du DataTable

• Un objet DataTable contient une collection Rows qui

contient les enregistrements.

Exemple : dim DT as DataTable

DT = ds.Tables("Commandes")

DT.Rows(i)  enregistrement n° i (objet DataRow)

• La collection Rows possède 2 propriétés :

– item : accéder a une ligne et/ou une colonne par son indice ou

son nom:( DT.Rows.item(i).item(j) ou DT.Rows(i).item(j) ou

DT.Rows(i).item("nom_champ") )

Publicité

– count : donne le nombre de lignes disponibles dans le DataTable

( DT.Rows.count  donne le nombre d‘enregistrements dans DT )

• NB. Les indices [0, objDataTable.Rows.count-1]

20

Exemple 4 : Naviguer entre les

enregistrements

21

Exemple 4 : Naviguer entre les

enregistrements

22

Exemple 4 : Naviguer entre les

enregistrements

23

Exemple 4 : Naviguer entre les

enregistrements

24

Ajout d‘un enregistrement

DataSet BD

25

Ajout d‘un enregistrement

• Utiliser un objet DataRow :

1. Déclarer un objet DataRow enreg

2. Affecter à enreg une nouvelle ligne (vide) dans un

DataTable (en utilisant la méthode NewRow() de la classe

DataTable)

3. Affecter aux champs de enreg les valeurs des champs de

l‘enregistrement à ajouter

4. Ajouter l‘objet enreg à la collection Rows du DataTable en

question (en utilisant la méthode DT.Rows.add(enreg))

5. Créer un objet OleDbCommandBuilder basé sur le

DataAdapter : il assure la génération automatique de la

requête associée à la propriété (InsertCommand) du

DataAdapter.

6. Faire appel à la méthode Update du DataAdapter pour

transférer l‘ajout vers la BD.

DataSet BD

26

Exemple 5 : ajouter un enregistrement

27

Exemple 5 : ajouter un enregistrement

Affecter à enreg une

nouvelle ligne vide

28

Exemple 5 : ajouter un enregistrement

29

Modification d‘un enregistrement

DataSet  BD

30

Publicité

Exemple 6 : modifier un

enregistrement

31

Suppression d‘un enregistrement

DataSet  BD

32

Exemple 7 : supprimer un

enregistrement

33

MAJ a partir d‘un DataGridView

34

Exemple 8 : MAJ des clients

35

Exemple 8 : MAJ des clients

36

L‘utilisation d‘un DataView

(Trier, filtrer, chercher,…)

37

Creation d‘un DataView

• Un DataView permet de représenter les données

stockées dans un DataTable dynamiquement.

– Un DataView est lié à un DataTable

– On peut créer plusieurs DataView pour un seul DataTable

• Un DataView permet de

– Trier les données d’un dataTable

– Filtrer les données d’un dataTable

– Chercher des données suite à un tri

• Création : 2 méthodes

1. Dim dv as DataView

dv=ds.Tables("nom_table").defaultView

2. Dim dv as New DataView(ds.Tables("nom_table"))

38

Exemple 9 : Tri des enregistrements

39

Exemple 9 : Tri des enregistrements

40

Exemple 10: filtrer des enregistrements

41

Exemple11: recherche d‘enregistrement

42

Exemple12: recherche

d‘enregistrement (plusieurs critères)

43