Chapitre 5:
ADO.Net et bases de données
sous Visual basic.Net
ADO.Net
• ADO (ActiveX Data Object) est une bibliothèque
logicielle de Microsoft fournissant une interface d'accès
aux données dans l'environnement Windows.
• ADO permet aux programmes clients d'accéder aux
données, et de les manipuler, dans un fichier ou un
serveur de base de données.
• ADO.Net est la nouvelle bibliothèque logicielle d’accès
aux données fournie en standard dans le Framework
.Net.
• C’est un ensemble de classes, de structures, de types
gérant l’accès à des sources de données.
ADO.net
• L‘accès aux BDs nécessite le chargement des fournisseurs de
données (providers)
• Un fournisseur de données : assure la communication avec
un type spécifique de base de données
• 4 fournisseurs de données (offerts par défaut) dans le
Framework.NET :
– Le fournisseur pour SQL Server. (SQL Server 7 et +) ;
imports System.Data.SqlClient
– Le fournisseur pour OLE DB. (SGBD n‘offrant pas un fournisseur
spécifique mais un pilote OLEDB comme Access) ;
imports System.Data.OleDb
– Le fournisseur pour ODBC. (même que OLEDB) ;
imports System.Data.Odbc
– Le fournisseur pour Oracle. (SGBD Oracle ) ;
imports System.Data.OracleClient
Les objets ADO.Net
• Les fournisseurs de données offrent 4 objets de base :
1) L‘objet Connection : permet d’établir une connexion
Advertisement
avec le serveur de base de données.
2) L‘objet Command : permet de demander l’exécution
d’une instruction ou d’un ensemble d’instructions SQL.
3) L‘objet DataReader : permet un accès en lecture seule
des données.
4) L‘objet DataAdapter : utilisé pour assurer le transfert
des données (l‘objet DataSet) et mettre à jour la BD, en
fonction des modifications effectuées localement dans
le DataSet.
Modes de fonctionnement dans
ADO.Net
• ADO.Net offre 2 modes de fonctionnement:
1) Le mode connecté :
• L‘application ou l‘utilisateur est en connexion
permanente avec la source de données.
• La connexion est réalisée au début de l’application puis
coupée à sa fermeture.
• Plus facile de contrôler quel utilisateur travaille sur les
données.
• le DataReader est en lecture seule, les données lues
dans la BD sont accessibles dans le DataReader.
• Les données sont à jour.
Mode très utile pour les application temps réel.
Modes de fonctionnement dans ADO.Net
2) Le mode non connecté :
• Pas de connexion permanente avec la source de données:
1. connexion établie 2. données extraites 3. connexion coupée.
• L’utilisateur travaille avec les données et la connexion est à
nouveau établie pour des mises à jour de la source de données
ou pour extraire d’autres données.
le DataSet peut lire et écrire des données dans la BD (Il faut un
DataAdapter en plus de la connexion).
L‘objet Command permet :
a- D'envoyer des ordres (en SQL) à la BD
Advertisement
pour la modifier.
b- D'envoyer une requête SELECT afin
de remplir le DataSet avec le résultat
de la requête
Inconvénients : Les données ne sont pas à jour et risque de
conflits lors des MAJ.
•
•
•
Le mode connecté avec le
Provider OLEDB (ACCESS)
Le mode connecté
• Le mode connecté : lire rapidement des enregistrements.
• Les étapes nécessaires :
1. Imports System.Data
2. Imports System.Data.OleDb
3. Créer un objet Connection (OleDbConnection)
4. Créer un objet Command (OleDbCommand)
5. Affecter à la propriété commandText de l‘objet
Command la requête SQL (Select) : chaine de caractères.
6. Ouvrir la connexion
7. Créer un objet DataReader (OleDbDataReader)
objCmd.ExecuteReader() on exécute la propriété
ExecuteReader pour créer l'objet DataReader
8. Parcourir l‘objet de type OleDbDataReader (avec une
boucle) et utiliser la méthode Read() pour lire les
enregistrements récupérés.
9. Fermer la connexion.
Exemple
• BD: Achat (NWIND.mdb)
• 8 tables: Fournisseurs, Produits, Catégories, Détails
Commandes, Commandes, Employés, Clients,
Messagers
Exemple 1 : récupérer les
Advertisement
contacts des clients
importer les
NameSpaces
Pour la base Access le
provider est OLEDB Jet 4
Exemple 1 : récupérer les
contacts des clients
Read avance la lecture des données à
l'enregistrement suivant , il retourne True s'il
y a encore des enregistrements et False
quand il est en fin de fichier; cela est utilisé
pour sortir de la boucle Do Loop.
Exemple 1 (exécution)
Autres méthodes et propriétés utiles
Classe DataReader :
• dr1.getOrdinal(nom_champ): donne le num
du champ nom_champ
• dr1.getName(i) : retourne le nom du champ
n° i
• dr1.HasRows : (False si pas d‘enregistrements
retournés, True sinon)
• dr1.fieldCount : retourne le nombre de
champs
Autres méthodes et propriétés utiles
Classe command
• cmd1.executeScalar( ) : permet de récupérer le
résultat d'une requête SQL qui contient une
instruction COUNT, AVG, MIN, MAX, SUM
Autres méthodes et propriétés utiles
Classe command
• (Prop.) cmd1.commandType=
commandType.text|.storedProcedure|.tableDirect
indique comment doit être traité la commande
CommandText
Advertisement
• .text : cmd va exécuter une requête SQL
(cmd1.commandText=une requête SQL)
• .storedProcedure : cmd va exécuter une procédure
stockée (cmd1.CommandText="nom_proc")
• .tableDirect : cmd va retourner toutes les lignes d‘une
table (cmd1.commandText="nom_table")
Exemple
• Afficher le nombre des clients et remplir une
liste avec les pays de tous les clients
Retourne toutes
les lignes de la
table « Clients »
Cas d‘une BD SQL Server (exple)
Requêtes paramétrées
Requêtes paramétrées
Manipuler directement la base
Modification de données
• La modification des données dans une BD
s’effectue par les instructions SQL (INSERT,
UPDATE, DELETE)
• Ces ins° ne retournent aucun résultat
Modification de données
• Etapes:
1. Créer un objet OleDbCommand basé sur une
requête SQL (INSERT, UPDATE ou DELETE)
2. Demander l’exécution de cette commande par
la méthode ExecuteNonQuery()
Cette méthode retourne le nombre
d’enregistrements affectés par l’exécution de
l’instruction SQL contenue dans le
OleDbCommand
Exemple