Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


Utilisation d'une base Access avec ADO.NET

Date de publication : 08/03/2005 , Date de mise a jour : 08/03/2005

Par Selkis (selkis.developpez.com)
 

Connection à la base de donnée en mode déconnecté, Declaration et parametrage du Data Adapter et Dataset. Ajout, suppression, modification d'enregistrement


I. Connection a une base de donnée Access
I.A. L'objet OleDbConnection
I.B. Declaration et parametrage du Data Adapter
I.C. Declaration et parametrage du DataSet
I.D. Le principe en 6 points
II. Mise à jour d'une base Access
II.A. L'objet OleDbCommandBuilder
II.B. Mise à jour de la Base de donnée
III. Exemple de Suppression
III.A. Récupération d'information
III.B. Traitement de suppression
III.C. Mise à jour avec la base
VI. Exemples DataTable
VIII.A. Comment remplir un Datagrid à partir d'un DataTable
VIII.B. Comment remplir Une zone de liste à partir d'un DataTable

Télecharger le code source commenté exemple vb.net Petite Gestion de contact

I. Connection a une base de donnée Access

    Dans cet exemple nous allons travailler avec les espaces de nom :
  • System.Data : stock toute les classes constituant l'architecture ADO.net
  • System.Data.OleDb : permet l'accés aux base de données de type Microsoft (Access, oracle, sql <7)
La declaration de ces espaces de nom est indispensable pour définir l'accès à notre base de donnée.
Imports System.Data Imports System.Data.OleDb

I.A. L'objet OleDbConnection

Avant toute manipulation de donnée de notre base nous devons nous connecter à cette dernière.

Comme c'est une base Access nous allons utiliser l'objet OleDbConnection fournit par l'espace de nom System.Data.OleDb.
Pour ce faire , il nous suffit de créer un nouvel objet Connection et de lui passer en paramètre la chaîne de connections, soit :

'Creation de l'objet connection Private Connection As New OleDb.OleDbConnection() 'parametrage de la chaine de connection Connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & "data source= " & Application.StartupPath & "\" & "MaBase.mdb;"

I.B. Declaration et parametrage du Data Adapter

Un adaptateurs de données nous permet de lancer une ou plusieurs instruction SQl et de stocker le resultat dans un objet DataSet.

Il pemet egalement de lire les données d'une base pour les placer dans le DataSet et de mettre à jour les données de la base à partir des modification effectuées dans le Dataset.

On utilise un Adaptateur par table!
'Declare le DataAdapter et selectionne tout les champs de la table "MaTable" Private AdapTContact As New OleDb.OleDbDataAdapter("select * from MaTable", Connection)

I.C. Declaration et parametrage du DataSet

Un objet DataSet est une copie en mémoire des donnée de la base, il permet de stocker des données en provenance d'une source de donnée qui seront manipulées en mode déconnecté, nous permettant ainsi de modifier, ajouter ou supprimer des enregistrement sans avoir recours à la connexion serveur.

Il est donc constitué d'un ou plusieurs objets DataTable (les Tables).
Chaque DataTable contient une collection d'objet DataRow (les lignes) et une collection d'objet DataColumn(les colonnes).

C'est la méthode Fill qui nous interesse, puisqu'elle nous permet de remplir le DataSet avec la structure et les enregistrement de la table "MaTable" suivant la requete definie par le DataAdapter.

'declaration du DataSet Private DtSet As New DataSet() ' remplissage du dataset AdapTContact.Fill(DtSet, "MaTable")

I.D. Le principe en 6 points

En résumé, 6 étapes nous suffisent pour remplir un DataSet à partir d'un DataAdapter
  • Parametrage de la chaine de connection
  • Ouverture de la connection
  • Execution de la requete
  • Defintion du DataAdapter
  • Remplissage du DataSet avec le résultat de la requête
  • Fermeture de la connection
Dim Connection As New OleDb.OleDbConnection() Dim AdapTContact As OleDb.OleDbDataAdapter Dim DtSet As New DataSet() Dim Sql As string 'Parametrage de la chaine de connection Connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & "data source= " & Application.StartupPath & "\" & "MaBase.mdb;" 'ouverture de la connection Connection.Open() 'definition de la requete (on selectionne tous les champs de la table "MaTable") Sql="select * from MaTable", Connection 'definition du DataAdapter AdapTContact=new OleDbDataAdapter (Sql, connection) ' remplissage du dataset AdapTContact.Fill(DtSet, "MaTable") 'Fermeture de la connection Connection.Close()

II. Mise à jour d'une base Access

Nous avons vu Précedement comment se connecter à une base Access en mode déconnecté, déclarer et parametrer un DataAdapter, un DataSet et lire les enregistrement contenu dans ce dernier pour remplir un DataGrid.

Nous allons voir maintenant comment il est possible de modifier, supprimer et ajouter un enregistrement (toujours en mode déconnecté) dans notre Dataset à partir de notre Datagrid , puis mettre à jour notre base à l'aide de notre DataAdapter et de l'objet OleDbCommandBuilder.


II.A. L'objet OleDbCommandBuilder

Pour se faciliter la tâche, lors de l'utilisation d'un DataSet, nous avons la possibilité grâce à l'objet OleDbCommandBuilder de générer automatiquement les objets Command utilisés pour le renvoie des données entre le DataSet et le DataAdapter.

Pour créer un objet OleDbCommandBuilder, nous devons le déclarer en lui passant en paramètre l'objet DataAdapter à utiliser.

Dans notre cas
Dim CmdBuild As OleDbCommandBuilder CmdBuild = New OleDb.OleDbCommandBuilder(AdapTContact)
Maintenant il nous suffit d'utiliser les différentes méthode de l'objet pour créer et renvoyer les objets Command qui nous conviennent soit :

  1. GetUpdateCommand (Obtient l'objet Command utile pour effectuer une mise à jour dans la base de donnée)
  2. GetInsertCommand (Obtient l'objet Command utile pour effectuer une insertion dans la base de donnée)
  3. GetDeleteCommand (Obtient l'objet Command utile pour effectuer une suppression dans la base de donnée)
AdapTContact.DeleteCommand = CmdBuild.GetDeleteCommand()

II.B. Mise à jour de la Base de donnée

Pour mettre ensuite à jour des données et gérer le transfert de ces données modifiées dans notre base, nous devons nous interresser aux proprietés citées ci-dessous de l'objet DataAdapter

  1. UpdateCommand (envoie une requete de modification)
  2. InsertCommand (envoie une requete d'ajout)
  3. DeleteCommande (envoie une requete de suppression)
AdapTContact.Update(DtSet, "MaTable")

III. Exemple de Suppression

Exemple de suppression d'un enregistrement sélectionné dans un DataGrid

Pour rappel , notre DataGrid se nomme Grid_client, la clé primaire de nos enregistrement est numérique et se situe dans le premier champ


III.A. Récupération d'information

En premier lieu nous devons recuperer le numero de ligne de l'enregistrement à supprimer, pour ce faire il suffit d'appliquer la méthode CurrentRowIndex à l'objet DataGrid qui nous renveras le n° de la ligne actuellement sélectionnée.

Dim ligneencours As Integer ligneencours = Grid_client.CurrentRowIndex
Nous allons ensuite récuperer la clé primaire de cette ligne (qui se situe dans le premier champ de la ligne en cours) grâce à la méthode Item (permet d'obtenir ou de definir la valeur d'une cellule spécifié) de l'objet DataGrid.

Dim CleUnik As String CleUnik = Grid_client.Item(ligneencours, 0)

III.B. Traitement de suppression

Nous pouvons donc maintenant rechercher notre entregistrement dans notre DataSet (DtSet pour notre exemple).
Pour ce faire nous allons creer un objet DataRow nommé Ligne (qui contiendra le fitre de notre selection , soit l'enregistrement que l'on doit supprimer) et lui affecter notre recherche.

Dim Ligne As DataRow() Ligne = DtSet.Tables("TContact").Select("Cleunik = " & CleUnik)
Puis le supprimer par la méthode Delete (supprime un DataRow) de l'objet ligne créer précédement (vous remarquerez le parmetre "0" de l'objet ligne, en effet notre filtre porté sur la clé primaire ne nous retourne qu'une ligne qui correspond a l'index "0").

Ligne(0).Delete()

III.C. Mise à jour avec la base

'Ouverture de la connection Connection.Open() 'Création CommandBuilder pour notre DataAdapter "AdapTContact" Dim CmdBuild As OleDbCommandBuilder CmdBuild = New OleDb.OleDbCommandBuilder(AdapTContact) 'Géneration de l'objet Command de suppression necessaire pour la mise à jour AdapTContact.DeleteCommand = CmdBuild.GetDeleteCommand() 'Mise a jour avec la base AdapTContact.Update(DtSet, "MaTable") 'Fermeture de la connection Connection.Close()

VI. Exemples DataTable

Télecharger le code source commenté exemple vb.net Petite Gestion de contact

VIII.A. Comment remplir un Datagrid à partir d'un DataTable

Un controle DataGrid affiche les données d'un ensemble de données ADO.NET sous la forme d'un tableau.
Il est très similaire au contrôle FlexGrid de Visual Basic 6.0, mais il comporte un grand nombre de nouvelles fonctions .

Dim MonDataTble As DataTable MonDataTble = DtSet.Tables("MaTable")

VIII.B. Comment remplir Une zone de liste à partir d'un DataTable

Une zone de liste , vous permet de montrer plusieurs éléments à l'utilisateur, avec la possibilité de selectionner un ou plusieurs éléments de cette liste.

Dim MonDataTble As DataTable MonDataTble = DtSet.Tables("MaTable") 'remplissage de la liste , ligne à ligne Dim Ligne As DataRow() For Each ligne In Matable.Rows Liste.Items.Add(ligne.Item("Champs1")) Next

Liste de mes articles Vb.Net:
Accueil de la section VB.NET.
Utilisation d'une base Access en mode déconnecté avec Ado.Net.
Lecture et ecriture d'un fichier Xml à schéma connu.
Création d'une application de type Service Windows.
Création d'un logo xara3d en utilisant un service webdistant


Copyright © 2005 selkis. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -