Chapitre3: Accès aux bases de...
Embed Size (px)
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