Chapitre3: Accès aux bases de...

53
2ème année IAG Chapitre 3: Accès aux bases de données Support de cours VB.NET Cours assuré par: Mr Chaouki Bayoudhi Mme Meriem Ennigrou

Transcript of Chapitre3: Accès aux bases de...

2ème année IAG

Chapitre 3: Accès aux bases de

données

Support de cours VB.NET

Cours assuré par:

Mr Chaouki Bayoudhi Mme Meriem Ennigrou

ADO.Net

• Pour avoir accès à partir de VB.Net aux Bases de Données il faut utiliser la technologie ADO.NET (ActiveX Data Objects)

• C’est la couche d’accès aux BD, càd le SGBD de VB.Net

• C’est un ensemble de classes, de méthodes et d’évènements permettant de récupérer et de manipuler des données.

• Elle permet un accès à différentes sources de données par

2Support de cours VB.NET

• Elle permet un accès à différentes sources de données par l’intermédiaire de fournisseurs OLE DB qui traduisent les requêtes dans le langage du système de base de données réel.

• La grande force de cette technologie est qu’elle permet une manipulation identique quelque soit la source de données (hormis les paramètres de connexion).

ADO.Net

Applications Visual Basic

Objets de Données ActiveX (ADO)

3Support de cours VB.NET

Fournisseurs OLE DB

OLE DB Oracle SQL

BD

ACCESS

BD

Oracle

BD SQL

Server

Fournisseurs d’accès

• Plusieurs fournisseurs existent pour les

différents SGBD existant sur le marché.

Source de données Fournisseur OLE DB

Microsoft Access OLEDB

4Support de cours VB.NET

SQL Server version 7 ou

supérieure

SQL

Oracle version 8.1.7 ou

supérieure

Oracle

ODBC ODBC

MySQL OLEDB

Espace de nom

• La technologie ADO.Net est basée sur un

ensemble de classes existant dans des espaces

de nom relatif chacun à un type de base de

données

• Au début de l’application, il faut donc

Espace de nom Fournisseur OLE DB

System.Data Compatible avec tous les

fournisseurs

System.Data.OleDB OLEDB

System.Data.SqlClient SQL

5Support de cours VB.NET

• Au début de l’application, il faut donc

importer ces espaces de nom avec Imports

Imports Espace_nom

System.Data.OracleClient Oracle

System.Data.ODBC ODBC

Mode connecté Vs. Mode déconnecté

• Deux modes existent pour l’utilisation des

données dans une application :

1. Mode Connecté : l’application client a un accès

direct à la source de données

6Support de cours VB.NET

direct à la source de données

2. Mode déconnecté : il est possible de travailler

sur des données sans avoir un accès direct et

permanent à la base.

Mode connecté

• Les objets utilisés dans ce mode sont :

1. Connexion : permet d’établir une connexion avec la source de données

2. Command : cet objet permet d’exécuter des traitements ou de modifier / lire des données

7Support de cours VB.NET

traitements ou de modifier / lire des données sur la source, c’est lui qui contiendra la requête SQL

3. DataReader : permet de parcourir, en lecture seule, l’ensemble des enregistrements récupérés par la requête. Il est créé par l’objet Command

Mode déconnecté

• Dans ce mode, le traitement des données se fait en 3 étapes :1. Récupération des données à partir de la source

2. Modification des données en mode déconnecté

3. Intégration des données modifiées à la source avec éventuellement résolution des conflits (contraintes

8Support de cours VB.NET

éventuellement résolution des conflits (contraintes d’intégrité)

• Les objets utilisés dans ce mode sont :1. Connexion : permet d’établir la connexion

2. DataAdapter : contenant la requête Select. Il sert de liaison entre la source de données et l’objet dataSet

3. DataSet : a la structure d’une base de données mais en local. Il peut être rempli par l’objet DataAdapter ou bien créé indépendamment d’une source de données

Mode déconnecté

9Support de cours VB.NET

DataSet – Composants

• Pour utiliser un DataSet, il faut importer

l’espace de nom System.data

• Un DataSet peut être composé de :

1. DataTable

10Support de cours VB.NET

1. DataTable

2. DataRow

3. DataColumn

4. DataRelation

5. Constraint

6. DataView

Etablir une connexion avec une BD

• Afin d’établir une connexion avec la BD, il faut créer un objet

connexion en instanciant la classe Connection spécifique au

fournisseur d’accès de votre BD

Fournisseur OLE DB Classe

ODBC OdbcConnection

OLEDB OleDbConnection

11Support de cours VB.NET

• Parmi les propriétés de ces classes

OLEDB OleDbConnection

SQL Server SqlConnection

Propriétés Description

ConnectionString Chaîne utilisée pour la connexion

contenant le fournisseur OLE DB et le

chemin d’accès de la BD

State Etat de la connexion

Etablir une connexion avec une BD

• Parmi les paramètres de la chaîne de connexion ConnectionString

Paramètres Description

Provider le fournisseur d’accès

Data Source l’emplacement de la base

ConnectionTimeOut délai en secondes maximum pour

12

• La liste des providers possibles selon la source de données

ConnectionTimeOut délai en secondes maximum pour

l’établissement de la connexion

Source de données Fournisseur Chaîne de connexion

Microsoft Access 2003 OLEDB Microsoft.Jet.OLEDB.4.0

Microsoft Access 2007 OLEDB Microsoft.ACE.OLEDB.12.0

SQL Server SQL SQLOLEDB.1

Oracle Oracle OraOLEDB.oracle

ODBC ODBC MSDASQL

MySQL OLEDB MySQLProv

Etablir une connexion avec une BD

Exemple

Dim myConnexion As OleDbConnection = New OleDbConnection ( ″Provider= Microsoft.Jet.OLEDB.4.0; Data Source = C:\consultation.mdb ; ConnectionTimeOut = 50″)

13

Permet d’établir une connexion avec la BD de

nom ″consultation.mdb″ qui est une BD Access

2003 dont le délai maximal est égal à 50

Support de cours VB.NET

Etablir une connexion avec une BD

• La propriété state peut avoir les valeurs suivantes :

– Closed : fermée

– Connecting : En cours de connexion

– Open : ouverte

– Executing : En exécuttion

– Fetching : Extraction de données

14

– Fetching : Extraction de données

– Broken : Interrompue

• Parmi les méthodes des classes de connexion, on cite :

• Après avoir créé l’objet Connexion il faut l’ouvrir avec Open

MyConnexion.open()

Méthode Description

Open Ouvre la connexion

Close Ferme la connexion et libère les ressources

CreateCommand Crée un objet Commande

Support de cours VB.NET

Travailler avec un DataReader

• Avec un objet DataReader on extrait les données en lecture seule : une requête SQL charge le dataReader.

• Pour gérer un DataReader on a besoin d’un objet Command.

• Dans ce cas, il faut suivre les étapes suivantes :

15Support de cours VB.NET

• Dans ce cas, il faut suivre les étapes suivantes :

– Créer un objet Connection

– Ouvrir la connexion

– Créer un objet Command

– Exécuter la méthode ExecuteReader pour créer l’objet DataReader

– Parcourir les enregistrements par la méthode read.

Travailler avec un DataReader

• Pour créer un objet Command, il faut instancier la classe

correspondante au fournisseur utilisé

Fournisseur Classe

ODBC OdbcCommand

OLEDB OleDbCommand

SQL Server SqlCommand

16Support de cours VB.NET

• Parmi les propriétés de ces classes :

SQL Server SqlCommand

Propriétés DescriptionCommandText Texte SQL de la requête à exécuter

Connection Connexion liée à la commande

CommandTimeOut Nombre de secondes pour l’exécution dela commande

Travailler avec un DataReader

• Parmi les méthodes des classes de commande

Méthode Description

Cancel Annule l’exécution de la commande

ExecuteReader Exécute la requête et retourne un objet de type

DataReader

ExecuteScalar Exécute la requête et retourne une valeur

17Support de cours VB.NET

ExecuteScalar Exécute la requête et retourne une valeur

unitaire (utilisé avec count, avg, etc.)

ExecuteNonQuery Exécute une commande ne retournant pas de

ligne (Insert, Update, Delete, etc.)

Travailler avec un DataReader

Exemple

1ère méthode

Dim MyCommand As OleDbCommand =MyConnexion.CreateCommand()MyCommand.CommandText = "SELECT NOM FROMQUESTIONS" Création de l’objet Commande à

18Support de cours VB.NET

QUESTIONS"

2ème méthode

Dim MyCommand As OleDbCommand = NewOleDbCommand()MyCommand.Connection = MyConnexionMyCommand.CommandText = "SELECT NOM FROM QUESTION"

Création de l’objet Commande à

partir de l’objet connection et sa

méthode CreateCommand

Création de l’objet Commande en

spécifiant dans la propriété connection

l’objet Connection concerné

Travailler avec un DataReader

• L’objet DataReader permet de lire les enregistrements issus d’une requête.

• Pour créer un objet DataReader, il faut tout d’abord instancier la classe correspondante au fournisseur utilisé.

Fournisseur Classe

19Support de cours VB.NET

Exemple

Dim myReader As OleDbDataReader = MyCommand.ExecuteReader()

ODBC OdbcDataReader

OLEDB OleDbDataReader

SQL Server SqlDataReader

Travailler avec un DataReader

• Parmi les méthodes de cet objet

Méthode Description

Close Ferme le DataReader

Read Avance au prochain enregistrement, retourne

True s’il existe d’autres enregistrements et False

s’il n’y en a plus

GetValue(i) Retourne la valeur du champ sans type à

20Support de cours VB.NET

GetValue(i) Retourne la valeur du champ sans type à

l’indice « i »

GetString, GetDouble,

GetBoolean, Getint32, …

Retourne la valeur du champ typé à l’indice « i »

GetType(i) Retourne le type du champ à l’indice « i »

GetName(i) Retourne le nom du champ à l’indice « i »

GetOrdinal (nom) Retourne l’indice du champ donné en

paramètre

FieldCount Retourne le nombre de colonnes du DataReader

Travailler avec un DataReader

• L’objet DataReader est lu séquentiellement de la 1ère ligne à la

dernière. C’est la méthode Read qui permet d’avancer à la

ligne suivante

• Une fois le traitement terminé, il faut fermer la connexion :

myConnexion.close()

21Support de cours VB.NET

Pour compter des enregistrements

• Avec ExecuteScalar de l'objet Command on peut récupérer les

résultats d'une requête SQL qui contient une instruction

COUNT (comptage) AVG (moyenne) MIN (valeur minimum)

MAX (valeur maximum) SUM (somme)

Exemple

22Support de cours VB.NET

Exemple

Mycommand.CommandText = "SELECT COUNT(*) FROM QUESTIONS"

MyConnexion.Open()

Dim iResultat As Integer = Mycommand.ExecuteScalar()

Permet de compter le nombre de questions

Pour mettre à jour une BD

• Avec ExecuteNonQuery de l'objet Command on peut mettre à

jour (INSERT, DELETE, UPDATE ou ajout d’une table) une BD

sans retourner de données

Exemple

Mycommand.CommandText = "insert into QUESTION values

23Support de cours VB.NET

Mycommand.CommandText = "insert into QUESTION values (...)"

MyConnexion.Open()

Mycommand.ExecuteNonQuery()

Permet de mettre à jour la BD

Imports System

Imports System.data

Imports System.data.OleDB

Public class Form1

Inherits System.Windows.Forms.Form

Private Sub Form1_Load (ByVal sender As System.Objec t, ByVal e As System.EventArgs) Handles MyBase.Load

Dim myConnexion As OleDbConnection = New OleDbConnect ion ( ″Provider= Microsoft.Jet.OLEDB.4.0; DataSource = C:\consultatio n.mdb ; ConnectionTimeOut = 50″)

Exemple Complet avec les DataReader

24Support de cours VB.NET

ConnectionTimeOut = 50″)

myConnexion.open()

Dim MyCommand As OleDbCommand = MyConnexion.CreateCom mand()

MyCommand.CommandText = "SELECT NOM FROM QUESTIONS"

Dim myReader As OleDbDataReader = MyCommand.ExecuteRe ader()

Do While myReader.read()

ListBox1.Items.Add(myreader.getString(0))

Loop

myReader.close()

myConnexion.close()

End Sub

End Class

Travailler avec un DataSet

• Les données du dataSet peuvent provenir soit :

1. de l’application cliente (par exemple données saisies par

l’utilisateur ou calculées par l’application, etc.)

2. d’une base de données

• Avant de remplir le DataSet par les données, il faut

créer sa structure

25Support de cours VB.NET

créer sa structure

• Pour créer un objet dataSet il faut instancier la

classe DataSet

Exemple

Dim donnees as new DataSet( ″donnees ″)

Créer un DataSet

• Parmi les propriétés de l’objet DataSet

Propriété Description

Tables Collection des tables contenues dans le

dataSet

Relations Collection des relations qui relient des

tables du dataSet

26

• Une fois créé, on doit lui ajouter des tables et des

relations.

• Pour créer un objet DataTable il faut instancier la

classe DataTable puis le lier à l’objet DataSet

Exemple

Dim personne As New DataTable( ″personne ″)

donnees.Tables.Add(personne)

tables du dataSet

26Support de cours VB.NET

Créer un DataSet

• Parmi les propriétés de l’objet DataTable

Propriété Description

Columns Collection des colonnes de la tableConstraints Collection des contraintes de la tableRows Collection des lignes de la table

Tableaude colonnesfaisant parti de la

27

• Pour ajouter un objet dataColumn à l’objet

dataTable, il faut instancier la classe DataColumn puis

la lier à l’objet DataTable

27Support de cours VB.NET

PrimaryKey Tableaude colonnesfaisant parti de laclé primaire

Créer un DataSet• En créant une colonne, on doit spécifier plusieurs

informations :

– Le nom de la colonne

– Le type de la colonne

– Les propriétés de la colonne qui sont résumées dans le

tableau suivant :

28

tableau suivant :

28

Propriété Description

AllowDBNull Autorise la valeur NullDefaultValue Valeur par défaut de la colonneUnique Définit si les valeurs de la colonne doivent être uniquesAutoIncrement Définit si la colonne est un compteur dont la valeur

s’incrémente automatiquementAutoIncrementSeed Valeur de départ de l’incrémentAutoIncrementStep Pas de l’incrément

Créer un DataSet

ExempleDim col1 As New DataColumn( ″pers_num ″, GetType(Integer))Col1.AutoIncrement = trueCol1.AutoIncrementSeed = 1Col1.AutoIncrementStep = 1donnees.Tables( ″personne ″).Columns.Add(col1)donnees.Tables( ″personne ″).PrimaryKey = New

DataColumn (){col 1}

2929Support de cours VB.NET

DataColumn (){col 1}Dim col2 As New DataColumn( ″pers_nom ″,GetType(String))Col2.Unique = trueCol2.DefaultValue = ″inconnu ″

donnees.Tables( ″personne ″).Columns.Add(col2)Dim col3 As New

DataColumn( ″pers_cat_num ″,GetType(Integer))donnees.Tables( ″personne ″).Columns.Add(col3)

Permet de lier l’objet

DataColumn à l’objet

DataTable

Permet de définir la clé

primaire de la table

Créer un DataSet

• La création d’une relation se fait en créant un objet

DataRelation et en spécifiant les champs des tables

qui sont liés.

• Pour créer un objet DataRelation, il faut instancier la

classe DataRelation

3030Support de cours VB.NET

• Lors de la création d’une relation, on doit spécifier

son nom, le champ « clé primaire » et le champ « clé

étrangère »

Créer un DataSet

Exemple

Dim categorie As New DataTable( ″categorie ″)

donnees.Tables.Add(categorie)

Dim col4 As New DataColumn( ″cat_num ″, GetType(Integer))

Col4.AutoIncrement = true

Col4.AutoIncrementSeed = 1

3131

Col4.AutoIncrementStep = 1

donnees.Tables( ″categorie ″).Columns.Add(col4)

donnees.Tables( ″categorie ″).PrimaryKey =New

DataColumn(){col4}

Dim col5 As New DataColumn( ″cat_lib ″,GetType(String))

donnees.Tables( ″categorie ″).Columns.Add(col5)

Dim rel As New DataRelation( ″personne_categorie ″, donnees.Tables( ″categorie ″).Columns( ″cat_num ″), donnees.Tables( ″personne ″).Columns( ″pers_cat_num ″))

donnees.Relations.Add ( rel )

Permet d’ajouter une table « categorie »

ayant 2 colonnes au DataSet

Remplir un DataSet à partir d’une BD

• Une requête SQL charge le DataSet avec des enregistrements

ou des champs

• Pour alimenter un DataSet on a besoin d’un DataAdapter qui

fait l’intermédiaire entre la BD et le DataSet.

• Dans ce cas, il faut suivre les étapes suivantes :

1. Créer un objet Connexion

32Support de cours VB.NET

1. Créer un objet Connexion

2. Ouvrir la connexion

3. Créer un objet DataAdapter

4. Remplir les DataTable d’un objet DataSet grâce à la méthode

Fill du DataAdapter

• Les DataGrid et les ListBox peuvent afficher des données à

partir des DataSet.

Remplir un DataSet à partir d’une BD

• Pour créer un objet DataAdapter il faut instancier

l’une des deux classes suivantes :

Fournisseur Classe

OLEDB OleDbDataAdapter

SQLServer SqlDataAdapter

33Support de cours VB.NET

• Il faut également spécifier la requête Select utilisée

pour remplir le DataSet et le fournisseur utilisé.

Exemple

Dim myDataAdapter As new OleDbDataAdapter( ″Select * From QUESTION″, cn)

SQLServer SqlDataAdapter

Remplir un DataSet à partir d’une BD

• Parmi les méthodes de l’objet DataAdapter

• Plusieurs alternatives existent pour remplir le

Méthode Description

Fill Remplit un DataSet. Cette méthode a la

capacité d’ouvrir et de fermer la

connexion utilisée

34Support de cours VB.NET

• Plusieurs alternatives existent pour remplir le

dataSet:

1. Remplir un DataTable déjà créé dans le DataSet

2. Créer et remplir un nouveau DataTable

3. Récupérer un certain nombre d’enregistrements

4. Remplir plusieurs DataTable simultanément

Remplir un DataTable déjà créé

• la structure du DataTable doit correspondre au jeu de

données retournées.

• La méthode Fill possède comme paramètres un DataSet et le

nom de la table à remplir.

ExempleDim ds As New DataSet ( ″monds″)

35

Dim ds As New DataSet ( ″monds″)Dim t As New DataTable( ″maTable ″)Dim col1 As New Data.DataColumn( ″num″, GetType(Integer))Dim col2 As New Data.DataColumn( ″lib ″, GetType(string))t.Columns.Add(col1)t.Columns.Add(col2)ds.Tables.Add(t)Dim cn As New OleDbConnectionCn.ConnectionString = “Provider=Microsoft.Jet.Oledb.4.0; Data Source = E:\bd2.mdb”Dim da As New OleDbDataAdapter (“Select * From Table1”,cn)Da.Fill(ds,”maTable”)

Créer et remplir un nouveau DataTable

• Dans ce cas, c’est le dataAdapter qui crée le DataTable ainsi

que sa structure. Le DataTable passé en paramètre est un

DataTable inexistant qui sera créé par le DataAdapter

Exemple

Dim ds As New DataSet ( ″monds″)

36

Dim ds As New DataSet ( ″monds″)

Dim cn As New OleDbConnection

Cn.ConnectionString = “Provider=Microsoft.Jet.Oledb.4.0; DataSource = E:\bd2.mdb”

Dim da As New OleDbDataAdapter (“Select * From Table1”,cn)

Da.Fill(ds,”maTable”)

36Support de cours VB.NET

Récupérer un certain nombre d’enregistrements

• Il est possible lors de l’appel de la méthode Fill de spécifier

quelles sont les lignes de la requête à récupérer. Pour cela, on

utilise deux paramètres qui sont l’indice de départ et le

nombre maximal d’enregistrements à récupérer.

Exemple

37

Exemple

Dim da As New OleDbDataAdapter (“Select * From Table1”,cn)

Da.Fill(ds,50,10,”toto”)

Cet exemple permet de récupérer 10

enregistrements à partir du 50ème

enregistrement

37Support de cours VB.NET

Remplir plusieurs DataTable simultanément

• Il est également possible de remplir plusieurs DataTable à

partir d’un seul DataAdapter en passant en paramètres

plusieurs requêtes séparées par des points virgule.

Exemple

Dim cn As New OleDbConnection (“Provider = Microsoft.Jet.OleDb.4.0 ; DataSource = E: \ bd2.mdb”

38

E: \ bd2.mdb”

Dim da As New OleDbDataAdapter (“Select * From Client; Select * from Produit; Select * From Commande”,cn)

Da.Fill(ds,”maTable1”, ”maTable2”, ”maTable3” )

‘Affectation de nouveaux noms aux tables créés

Ds.Tables(0).TableName= ″Client ″

Ds.Tables(1).TableName= ″Produit ″

Ds.Tables(2).TableName= ″Commande″38

Support de cours VB.NET

Travailler avec les données du DataSet

• Chaque DataTable contient une collection de

DataRow qui sont les différents enregistrements de

la table

• Plusieurs opérations sont possibles :

1. Parcourir les données

39

2. Insertion de données

3. Modification des données

4. Suppression des données

39Support de cours VB.NET

Parcours des données du DataSet

• Deux modes de parcours existent :

– Parcours linéaire qui permet d’accéder aux enregistrements d’une seule

table via leur indice selon un accès direct

– Parcours hiérarchique permettant d’utiliser les relations mises en place

entre les tables d’un DataSet

Exemple de parcours linéaire

Dim contenu As String

40

Dim contenu As String

Dim i as integer

For i = 0 To donnees.Tables( ″personne ″).Rows.count-1

Contenu = contenu & donnees.Tables( ″personne ″).Rows(i).Item( ″pers_num ″)& ″- ″ & donnees.Tables( ″personne ″).Rows(i).Item( ″pers_nom ″) & vbCr

Next

MsgBox(Contenu)

L’exemple affiche tous les

enregistrements de la table ″personne″

Donne le contenu du champ

« pers_num » de la ligne i

Parcours des données du DataSet

Exemple précédent modifié

Dim contenu As String

Dim tpersonne as DataTable

tpersonne = donnees.Tables( ″personne ″)

Dim i as integer

For i = 0 To tpersonne.Rows.count-1

41

Contenu = contenu & tpersonne.Rows(i).Item( ″pers_num ″)& ″- ″ & tpersonne.Rows(i).Item( ″pers_nom ″) & vbCr

Next

MsgBox(Contenu)

4141Support de cours VB.NET

Parcours des données du DataSet

Exemple de parcours hiérarchique

Dim contenu2 As String

Dim elt As DataRow

Dim i as integer

Dim tcategorie as DataTable

Tcategorie = donnees.Tables( ″categorie ″)

L’exemple affiche pour chaque

catégorie, toutes les personnes

correspondantes

42

For i = 0 To Tcategorie.Rows.Count-1

Contenu2 = contenu2 & Tcategorie.Rows(i). Item( ″cat_lib ″) & vbCr

For each elt In Tcategorie.Rows(i).GetChildRows( ″personne_categorie ″)

Contenu2 = contenu2 & elt.Item( ″pers_nom ″) & vbCr

Next

Next

MsgBox(contenu2)

La méthode GetChildRows de l’objet dataRow

permet de sélectionner les enregistrements de la

table « Personne » associés à une catégorie

déterminée selon la relation « personne_catégorie »

Parcours des données du DataSet

Exemple 2

Dim contenu3 As String

Dim i as integer

Dim tpersonne as DataTable

Tpersonne = donnees.Tables( ″personne ″)

For i = 0 To Tpersonne.Rows.Count-1

L’exemple affiche pour chaque

personne le libellé de la catégorie

à laquelle elle appartient

43

Contenu3 = contenu3 & Tpersonne.Rows(i).Item( ″pers_num ″) & ″_″ & Tpersonne.Rows(i).Item( ″pers_nom ″) & ″_″ & Tpersonne.Rows(i).GetParentRow( ″personne_categorie ″). Item( ″cat_lib ″)& VbCr

Next

MsgBox(contenu3)

La méthode GetParentRow de l’objet dataRow

permet de sélectionner l’enregistrement de la table

« Catégorie » associé à une personne donnée selon

la relation « personne_catégorie »

Insertion des données dans un DataSet

• Pour insérer un nouvel enregistrement, on doit :

– Créer un objet DataRow à partir du DataTable

– Configurer les valeurs des différentes colonnes

– Ajouter le DataRow au DataTable

Exemple

44

ExempleDim dr As DataRow = donnees.Tables( ″categorie ″).NewRow()

dr( ″cat_lib ″)= ″Salarie”

donnees.Tables(“categorie”).Rows.Add(dr)

L’exemple ajoute un enregistrement

dans le DataTable « categorie »

Insertion des données dans un DataSet

Exemple 2Dim dr2 As DataRow = donnees.Tables( ″personne ″).NewRow()

dr2( ″pers_nom ″)= ″Ali ″

Dr2( ″pers_cat_num ″) = ″3″

donnees.Tables(“personne”).Rows.Add(dr2)

45

L’exemple ajoute une personne dans le

DataTable « personne » en lui

attribuant la catégorie N°3

4545Support de cours VB.NET

Modification des données d’un DataSet

• La modification de données est possible en modifiant la

collection Rows de l’objet DataTable.

• La modification se fait en trois étapes :

1. Appel de la méthode « BeginEdit » sur l’objet DataRow qui

permet de commencer une opération de modification

2. Modification des données

46

2. Modification des données

3. Appel de la méthode « EndEdit » pour valider les modifications

ou de la méthode « CancelEdit » pour les annuler

Exempledonnees.Tables( ″personne ″).Rows(0).BeginEdit()

donnees.Tables( ″personne ″).Rows(0).Item(“pers_nom”)=”ali”

donnees.Tables( ″personne ″).Rows(0).EndEdit()L’exemple permet de modifier le 1er L’exemple permet de modifier le 1er

enregistrement de la table « Personne »

Suppression des données d’un DataSet

• La suppression des données consiste à supprimer des

objets DataRow de l’objet DataTable. Pour cela, on utilise la

méthode « Delete » de l’objet DataRow.

ExempleDonnees.Tables( ″personne ″).Rows(0).Delete()

47

L’exemple permet de supprimer le 1er

enregistrement de la table « Personne »

4747Support de cours VB.NET

Création d’un objet DataView

• Un DataView permet d’extraire, filtrer et trier des données

issues d’un DataTable.

• Il est possible de modifier, ajouter, supprimer des données

directement à partir du DataView et les modifications

seront automatiquement retranscrites dans le DataTable

lié.

48

lié.

• Parmi les propriétés de cet objet, on cite :Propriétés Description

AllowDelete Autorise la suppression d’enregistrementsAllowEdit Autorise la modification d’enregistrementsAllowNew Autorise l’ajout d’enregistrementCount Nombre d’enregistrementsSort Equivalent à order by en SQL

Création d’un objet DataView

• Parmi les méthodes de cet objet, on cite :

Méthodes DescriptionAddNew Ajoute un enregistrementDelete Supprime un enregistrementFind Retourne l’indice de l’enregistrement

correspondantauxparamètresderecherche

49

correspondantauxparamètresderecherchepar rapport aux champs spécifiés dansl’attribut « sort »

FindRows Retourne un ensemble de DataRowcorrespondant à la recherche

4949Support de cours VB.NET

Création d’un objet DataView

Exemple

Dim dv As New DataView

dv.Table=donnees.Tables(“personne”)

dv.AllowDelete = False

dv.AllowNew = FalseCrée un DataView à partir du

DataTable « personne »

50

dv.AllowEdit = True

dv.Sort = “pers_nom”

Dim indice As Integer

Indice = dv.Find(“mohamed”)

MsgBox(dv(indice).Item(“pers_cat_num”))

DataTable « personne »

Les enregistrements sont classés

par ordre décroissant

Cherche l’enregistrement dont le nom

est « mohamed »

Remplir un DataGridView à partir d’un DataSet

• Un dataGridView est une grille avec des lignes et des

colonnes comme un tableur

• Une fois que le dataSet existe, en une seule ligne de code,

on peut l'afficher dans un DataGridView

• La syntaxe est la suivante :

51

• La syntaxe est la suivante :

DataGridView1.dataSource = donnees.tables("personne")

5151Support de cours VB.NET

Exporter les données d’un DataSet vers une BD

• L’exportation des données d’un DataSet vers une BD se fait

également à l’aide d’un objet DataAdapter et d’un objet

CommandBuilder

• La création d’un objet CommandBuilder se fait par

instanciation de l’une des classes:

52

• La méthode update de l’objet DataAdapter permet

d’exporter les données du dataSet vers la Base de données

5252Support de cours VB.NET

Fournisseur Classe

OLEDB OleDbCommandBuilder

SQL Server SqlCommandBuilder

Exporter les données d’un DataSet vers une BD

Exemple

Dim cmdbuilder as new oledbCommandBuilder(da)

Da.update(ds, “personne”)

535353Support de cours VB.NET