DAO (Data Access Objects)

DAO (Data Access Objects) fournit un accès aux données des bases de données natives Microsoft Jet (fichiers .mdb), des bases de données ISAM sélectionnées et de toute source de données ODBC. Historiquement, DAO est une solution très répandue lorsqu'il s'agit d'utiliser des sources de données Microsoft® Access (.mdb) et ISAM telles que Btrieve, FoxPro, Paradox et dBase.

Les caractéristiques générales de DAO sont les suivantes:

  • codage difficile;
  • souplesse, avec possibilité d'accéder à de nombreuses sources de données différentes;
  • performances modérées;
  • fonctionnalité DDL (Dynamic Data Language);
  • prise en charge des curseurs complexes.

Par rapport aux technologies plus récentes ADO (ActiveX Data Objects) ou RDO (Remote Data Objects), DAO est une solution plus lente et moins performante. DAO (et son pendant le moteur de base de données Microsoft Jet) a été conçu à l'origine pour gérer l'accès aux données ISAM distantes. DAO est lié au moteur Microsoft Jet car il utilise ses processeurs de requêtes et d'ensembles de résultats.

Remarque : Une variante de DAO nommée ODBCDirect utilise un modèle objet analogue mais évite la charge du moteur Microsoft Jet et offre un accès plus rapide et plus direct aux sources de données ODBC

Présentation du modèle objet DAO

Le modèle objet DAO est une collection d'objets qui modélisent la structure d'un système de base de données relationnelle. Avec les propriétés et les méthodes fournies par les objets DAO, vous pouvez accomplir toutes les opérations nécessaires à la gestion d'un tel système, y compris la création de bases de données, la définition de tables, de champs et d'index, l'établissement de relations entre les tables, ainsi que la navigation dans la base de données et l'interrogation de celle-ci.

Le moteur de base de données Microsoft Jet convertit les opérations effectuées sur les objets d'accès aux données en opérations physiques sur les fichiers de base de données et gère tous les mécanismes d'interface avec les différentes bases de données prises en charge.

Le modèle objet DAO se compose des quinze objets décrits ci-dessous.

  • Objet DBEngine contient tous les autres objets et gère les options du moteur.
  • Objet Workspace définit et gère la session utilisateur en cours. Cet objet contient des informations sur les bases de données ouvertes et fournit des mécanismes permettant les transactions simultanées.
  • Objet Database représente une base de données avec au moins une connection ouverte. Il peut s'agir d'une base de données Microsoft Jet ou d'une source de données externe.
  • Objet TableDef contient les objets Field et Index permettant de décrire les tables de la base de données.
  • Objet QueryDef représente une instruction de requête SQL stockée, avec ou sans paramètre, gérée dans une base de données Microsoft Jet.
  • Objet Recordset représente un ensemble de résultats de requête avec curseur. DAO dispose de cinq types d'objets Recordset: table, dynaset, snapshot, forward-only et dynamic. Pour plus d'informations Pour plus d'informations sur les objets Recordset, sur les types de curseurs disponibles et sur la façon dont votre application peut les utiliser, reportez-vous à la section Choix et gestion des curseurs, dans le chapitre 7 de ce manuel.
  • Objet Container représente un certain ensemble d'objets dans une base de données, pour lequel vous pouvez affecter des autorisations dans un groupe de travail sécurisé. En plus des objets Container fournis par DAO, une application peut définir ses propres objets Container (tels que des formulaires enregistrés, des modules, des états ou des macros de script).
  • Objet Relation représente une relation entre les champs de tables ou de requêtes. Vous pouvez utiliser l'objet Relation pour créer, supprimer ou modifier le type de relation, indiquer quelles tables fournissent les champs concernés, préciser si l'intégrité référentielle doit être appliquée et si les mises à jour et les suppressions en cascade doivent être effectuées.
  • Objet Field représente un champ dans une table, une requête, un index, une relation ou un jeu d'enregistrements. Un objet Field contient des données et vous pouvez l'utiliser pour lire ou écrire des données dans un enregistrement.
  • Objet Index représente un index sur une table de la base de données.
  • Objet Parameter représente une valeur associée à un objet QueryDef. Les paramètres de requête peuvent être en entrée, en sortie ou les deux.
  • Objet Document contient des informations sur les objets de la base de données (tels que les tables, les requêtes ou les relations).
  • Objet User représente un compte d'utilisateur avec les autorisations d'accès correspondantes.
  • Objet Group représente un groupe de comptes d'utilisateur ayant des autorisations communes dans un espace de travail particulier.
  • Objet Error contient les informations relatives à une erreur survenue lors d'une opération DAO. Si plusieurs erreurs se produisent lors d'une même opération DAO, chacune de ces erreurs est représentée par un objet Error distinct.

Chaque objet Workspace possède une collection d'objets Database. Chaque objet Database représente tous les objets susceptibles d'être présents dans une base de données. Parmi ces objets, les objets Recordset sont probablement les plus utilisés car ils fournissent les moyens d'exécuter les instructions SQL et de manipuler l'ensemble de résultats.

Les objets TableDef offrent un accès simple aux tables ainsi qu'à leurs champs et index. Le modèle objet DAO est relativement complexe car il offre énormément de fonctionnalités par le biais du moteur Microsoft Jet pour de nombreuses sources de données différentes.

Accès aux données avec DAO

Il existe trois catégories de base de données accessibles par DAO et par le moteur Microsoft Jet, présentées dans la liste suivante.

  • Bases de données Microsoft Jet natives Ces fichiers de base de données utilisent le même format que les bases de données Microsoft Access. Ces bases de données sont créées et manipulées directement par le moteur Microsoft Jet et offrent un maximum de souplesse et de vitesse.
  • Bases de données externes Ce sont des bases de données ISAM (Indexed Sequential Access Method) dans divers formats répandus, parmi lesquels Btrieve, dBASE III, dBASE IV, Microsoft FoxPro versions 2.0 et 2.5, et Paradox versions 3.x et 4.0. Vous pouvez créer ou manipuler tous ces formats de base de données dans Visual Basic. Vous pouvez également accéder à des bases de données de fichiers texte, ainsi qu'à des feuilles de calcul Microsoft Excel ou Lotus 1-2-3. Conseil L'API ODBC est une interface utilisée par le moteur de base de données Microsoft Jet pour accéder à des bases de données externes non ISAM. Bien qu'il existe des pilotes ODBC ISAM, Microsoft Jet utilise ses propres pilotes installables.
  • Bases de données ODBC Il s'agit de bases de données relationnelles conformes à la norme ODBC, comme par exemple Microsoft SQL Server.

Le moteur de base de données Microsoft Jet convertit les opérations effectuées sur les objets DAO en opérations physiques sur les fichiers de base de données eux-mêmes et gère tous les mécanismes d'interface avec les nombreuses bases de données différentes prises en charge.

Pour accéder à une source de données, une application basée sur DAO utilise les opérations suivantes.

  • Création de l'espace de travail Définit la session utilisateur, y compris l'identification de l'utilisateur, son mot de passe et le type de base de données (par exemple, Microsoft Jet ou ODBC).
  • Ouverture de la base de données Spécifie une chaîne de connection pour un objet Workspace donné, soit des informations telles que le nom de source de données et la table de base de données.
  • Ouverture du jeu d'enregistrements Exécute une requête SQL (avec ou sans paramètre) et remplit le jeu d'enregistrements.
  • Utilisation du jeu d'enregistrements L'ensemble de résultats de la requête est désormais disponible pour votre application. Selon le type du curseur, vous pouvez parcourir et modifier les données des lignes.
  • Fermeture du jeu d'enregistrements Supprime les résultats de la requête et ferme le jeu d'enregistrements.
  • Fermeture de la base de données Ferme la base de données et libère la connection.

Avec DAO, vous pouvez travailler directement avec des tables et des index ISAM. C'était l'avantage présenté par le modèle d'accès aux données DAO mais ADO offre aujourd'hui les mêmes fonctions avec les fournisseurs OLE DB.

Vous pouvez utiliser DAO pour effectuer des opérations DDL (Data Definition Language) qui affectent la structure de votre base de données. Par exemple, vous pouvez créer, supprimer et modifier les définitions de table.

Technologie plus ancienne d'accès aux données, DAO est limitée aux magasins de données qui peuvent être manipulés par le moteur Microsoft Jet. Si votre application nécessite l'accès à d'autres types de magasins de données, DAO ne pourra pas l'offrir. De plus, DAO ne peut pas créer de requêtes utilisant des curseurs côté serveur.

L'utilisation de DAO affaiblit considérablement les performances en raison de l'utilisation du moteur de base de données Microsoft Jet.

Quand utiliser DAO

DAO est la seule technologie d'accès aux données qui prenne en charge les opérations 16 bits. Si votre application doit tourner dans un environnement 16 bits, DAO est la seule possibilité.

Si votre application doit accéder à des ressources aussi bien Microsoft Jet natives qu'ODBC, DAO offre un modèle de programmation cohérent (bien qu'il soit envisageable d'utiliser les fournisseurs de données OLE DB et le modèle uniformisé d'accès aux données ADO).

Si votre application doit accéder à des sources de données distantes, DAO et son pendant (le moteur de base de données Microsoft Jet) ne sont pas un bon choix car ils sont lents et consomment beaucoup plus de ressources que les technologies d'accès aux données plus récentes (comme par exemple ADO ou RDO).

Si vous avez une expérience pratique de DAO et que vous possédez de grandes quantités de code DAO existant, ou que vous devez simplement étendre une application existante qui utilise une base de données Microsoft Jet, DAO peut vous convenir. L'inconvénient est que, si votre application requiert d'autres types de sources de données, DAO ne pourra pas y accéder. Vous souhaiterez finalement tirer parti des avantages offerts par ADO en matière de conception, de codage et de performances.

Dernière mise à jour le mardi 30 novembre 1999



Afficher: