Vous êtes sur la page 1sur 13

ADO.

NET Activex Database Objet

Généralités
ADO.NET. Permet d’accéder aux bases de données à partir de VB.NET.

ADO veut dire Activex Database Objet .

C'est la couche d'accès aux bases de données, le SGBD (Système de Gestion de Base de Données) de VB.

ADO.NET à un langage unique pour ouvrir, interroger, modifier plusieurs types de bases de données.

Le langage de requête est le SQL.

En VB il y a 2 manières d'écrire un programme qui utilise une base de données:

- Écrire du code pour créer des objets Ado.net, pour ouvrir la base, pour créer la liaison entre la base et un
DataSet avec des critères de sélection écrits en SQL.

- Utiliser l’assistant de configuration de source de base de données qui crée les objets et le code à votre place.
On peut même lier une table à une liste par exemple qui sera 'remplie' automatiquement par la table (On parle
de Binding).

79
ADO.NET
Les Managed Providers

Pour avoir accès aux données il faut charger les DRIVERS (ou providers).

• OLE DB Managed Provider est fourni dans 'System'; après avoir importé le
NameSpace System.Data.OLEDB, on peut travailler sur des bases Access par
exemple.
• SQL Server Managed Provider est fourni dans 'System'; après avoir importé le
NameSpace System.Data.SqlClient, on peut travailler sur des bases SqlServer.

Exemple, pour travailler sur une base Access, il faudra taper:

Imports System.Data.OLEDB

80
ADO.NET
Les Objets ADO.NET
• Il faut disposer d'un objet Connexion pour avoir accès à la base de données
• On met dans la propriété ConnectionString les paramètres de la base de données (nom de la base de
données, chemin, mot de passe..).
• En fonction de la BD les paramètres sont différents.
• Avec la méthode Open on ouvre la base.
• Avec la méthodes Close on ferme la base.

On peut ensuite travailler de 2 manières:

A- On manipule directement la base. (sans retour de résultats)

Avec un objet Command on peut manipuler directement la BD


(en SQL avec UPDATE, INSERT, DELETE CREATE DROP..),
on utilise la propriété ExecuteNonQuery pour cela.

81
ADO.NET
B- On envoie une requête Sql 'SELECT' à la base, on récupère le résultat dans un objet.

• Avec un objet DataReader on extrait les données en lecture seule: une requête SQL (sur un objet
command) charge le DataReader. c'est rapide; on peut lire uniquement les données et aller à
l'enregistrement suivant. Il travaille en mode connecté. Pour gérer un DataReader on a besoin d'un
objet Command.

• Avec un objet DataSet on manipule les données: une requête SQL (sur un objet command) charge
le DataSet avec des enregistrements ou des champs, on travaille sur les lignes et colonnes du DataSet
en local, en mode déconnecté(une fois que le DataSet est chargé, la connexion à la base de données
est libérée).
libérée) Pour alimenter un DataSet on a besoin d'un objet DataAdapter qui fait l'intermédiaire
entre la BD et le DataSet.

Noter bien le sens des flèches:

• le DataReader est en lecture seule, les données lues


dans la BD sont accessibles dans le DataReader.
• le DataSet peut lire et écrire des données dans la BD,
il faut un DataAdapter en plus de la connexion.
• l'objet Command peut modifier la BD.

82
ADO.NET
Ce schéma souligne aussi les objets intermédiaires nécessaires:

• Un objet connexion dans tous les cas,


• Un objet Command pour le DataReader,
• Un objet DataAdapter plus un objet Command pour le DataSet .

L'objet Command permet d'envoyer des ordres en SQL à la BD et de la modifier, il permet aussi,
quand on utilise un DataSet, d'envoyer une requête SELECT en SQL afin de remplir le DataSet avec
le résultat de la requête.

Enfin certains contrôles comme les DataGrid, les ListBox par exemple peuvent afficher des
données à partir d'un DataSet.

Pour mettre à jour la base après modification du DataSet ou de la Grid il faut un objet
CommandBuilder.

Mode connecté ou déconnecté:

• Le DataReader fonctionne en mode connecté. La connexion entre la BD et le DataReader est


ouverte tant que le DataReader fonctionne.
• Le DataSet peut travailler en mode déconnecté: on ouvre la connexion, on charge le DataSet, on
ferme la connexion (il faut le faire, ce n'est pas automatique), on travaille sur le DataSet, on peut le
réouvrir plus tard pour les mises à jour.
83
ADO.NET
Remarque: En fonction du provider, le nom des objets change:

• Avec le provider OleDb, après Imports System.Data.OleDb

on utilisera OleDbConnexion, OleDbAdapter...

• Avec le provider SQL, après Imports System.Data.SqlClient

on utilisera SqlConnexion, SqlAdapter...

Le DataReader

Le DataReader permet donc de lire très rapidement une table, enregistrement par enregistrement,
du début à la fin. Il n'y a pas possibilité d'écrire dans la base.

Le DataSet
Le DataSet a la structure d'une base de données mais en local; il contient:

Des DataTable qui contiennent des DataRow et des DataColumn.

Pour utiliser DataSet, DataTable, DataRow.. il faut importer l'espace de nom Data:

Imports System.Data 84
ADO.NET
On peut créer un Dataset de toutes pièces, mais la plupart du temps, on charge le DataSet à partir d'une
base de données.

Une requête SQL charge le DataSet, on travaille sur les lignes et colonnes du DataSet en local ( sur des
enregistrements ou des champs), en mode déconnecté (une fois que le DataSet est chargé, la connexion
à la base de données peut être libérée).

La structure de données du DataSet reflétera automatiquement et exactement celle des données


extraites. Si j'extrais 2 colonnes de données avec l'instruction Sql fournis à l'objet Command, le
DataSet aura une table ((DataTable)) de 2 colonnes avec les données extraites.

Exemple :

Avec ADO.NET je lance une requête SQL demandant toutes les fiches de la table 'nom' dont le champ
'prénom' est ‘Mohamed', je récupère un DataSet local contenant toutes les fiches (Le DataColumn
"Prénom" ne contient que des ‘Mohamed'). Je peux modifier en local le DataSet, (modifier une date de
naissance par exemple) et mettre à jour automatiquement la base de données distante.

Il existe aussi les DataView qui représentent une vue d'un DataTable. (Un DataView peut contenir un
champ d'une table d'un DataSet, ou les enregistrements répondant à un critère).

85
Exemple complet

Met à jour la base après modification du DataSet

88
Exemple complet

89
Exemple complet

90
Exemple complet

91
Exemple complet

92
Exemple complet

93