Site:  Cours VB.net  
6.2 ADO.NET

Comment travailler sur les Base de données en VB.NET? Avec ADO.NET

Généralités:

Pour avoir accès à partir de VB.NET aux bases de données il faut utiliser ADO.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 est ".NET" donc managé et géré par le CLR.

Il est indépendant de la base de donnée: alors que initialement chaque type de gestionnaire de base de données avait ses instructions, sa manière de fonctionner, ADO.NET à un langage unique pour ouvrir, interroger, modifier une base de données quelle que soit la base de données.

Le langage de requête est le SQL.

 

Les Managed Providers 

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

Comme d'habitude, il faut:

Ainsi on a accès aux objets.

 

Voyons cela:

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

Imports System.Data.OLEDB

 

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 déférents. Un site nommé ConnetionStrings.com donne une mine de renseignements pour écrire les paramètres pour une BD.

Avec la méthode Open on ouvre la base.

 on peut ensuite travailler de 2 manières:

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

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

Avec la méthodes Close on ferme la base.

Résumons les différents objets nécessaires pour travailler sur une BD:

 

Noter bien le sens des flèches:

Ce schéma souligne aussi les objets intermédiaires nécessaires:

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é:

 

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...

Un site nommé ConnetionStrings.com donne une mine de renseignements pour écrire les paramètres pour une BD.

 

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

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 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 'Philippe', je récupère un DataSet local contenant tous les fiches (Le DataColumn "Prénom" ne contient que des 'Philippe'). Je peux modifier en local le DataSet, (modifier une date de naissance par exemple) et mettre à jour automatiquement la base de données distante.