Vue d'ensemble
Dans de nombreuses situations, il peut être souhaitable de migrer les applications qui utilisent des classes de base de données ODBC MFC pour les classes de base de données DAO MFC. Cette note technique expose en détail la plupart des différences entre les classes MFC ODBC et DAO. Avec les différences à l'esprit, il ne devrait pas être trop difficile de migrer les applications des classes ODBC pour les classes MFC si désiré.
Pourquoi migrer de ODBC vers DAO?
Il y a un certain nombre de raisons pour lesquelles vous souhaitez migrer des applications de la classe de base de données ODBC pour les Classes de base de données DAO, mais la décision n'est pas forcément simple ou évident. Une seule chose à garder à l'esprit est que le moteur de base de données Microsoft Jet qui est utilisé par DAO peut lire n'importe quelle source de données ODBC pour laquelle vous avez un pilote ODBC. Il peut être plus efficace d'utiliser les Classes de base de données ODBC ou appel ODBC directement vous-même, mais le moteur de base de données Microsoft Jet peut lire des données ODBC.
Il y a certains cas simples qui rendent la décision ODBC et DAO facile. Par exemple, lorsque vous avez seulement besoin l'accès aux données dans un format que le moteur Microsoft Jet peut lire directement (format Access, FoxPro format, format Excel et ainsi de suite) le choix évident est d'utiliser les Classes de base de données DAO.
Des cas plus complexes se posent lorsqu'il existe des vos données sur un serveur ou sur une variété de différents serveurs. Dans ce cas, la décision d'utiliser les classes de base de données ODBC ou les classes de base de données DAO est difficile. Si vous voulez faire des choses telles que les jointures hétérogènes (jointure données provenant de serveurs dans différents formats tels que SQL Server et Oracle), puis le moteur de base de données Microsoft Jet effectuera la jointure pour vous au lieu de vous faire les travaux nécessaires si vous utilisé les Classes de base de données ODBC ou appelé ODBC directement. Si vous utilisez un pilote ODBC prend en charge les curseurs du pilote, votre meilleur choix peut-être être les classes de base de données ODBC.
Le choix peut être compliqué, donc vous pouvez écrire un exemple de code pour tester les performances de différentes méthodes, compte tenu de vos besoins particuliers. Cette note technique suppose que vous avez pris la décision de migrer dans les Classes de base de données ODBC pour les classes de base de données DAO.
Similitudes entre les Classes de base de données ODBC et les Classes de base de données DAO MFC
La conception originale des classes ODBC MFC était fondée sur le modèle d'objet DAO qui a été utilisée dans Microsoft Access et Microsoft Visual Basic. Cela signifie qu'il y a beaucoup de caractéristiques communes des classes ODBC et DAO MFC, qui seront pas tous répertoriés dans cette section. En général, les modèles de programmation sont les mêmes.
Pour mettre en évidence quelques similitudes:
Par exemple, dans les deux modèles est la procédure pour récupérer des données pour créer et ouvrir un objet de base de données, créer et ouvrir un objet recordset et naviguer (aller) bien que les données d'exécution d'une opération.
Différences entre les ODBC et les Classes DAO MFC
Les classes DAO incluent plus d'objets et d'un riche jeu de méthodes, mais cette section détaillera uniquement les différences dans les mêmes classes et fonctionnalités.
Les différe&nces les plus évidentes entre les classes sont probablement les changements de nom pour les mêmes classes et fonctions globales. La liste suivante indique le nom des changements ofnbsp ; les objets, méthodes et fonctions globales associées à la classe de base de données:
| Classe ou fonction | Équivalent dans les Classes DAO MFC |
| CDatabase | CDaoDatabase |
| CDatabase::ExecuteSQL | CDaoDatabase::Execute |
| CRecordset | CDaoRecordset |
| CRecordset::GetDefaultConnect | CDaoRecordset::GetDefaultDBName |
| Objet CFieldExchange | CDaoFieldExchange |
| RFX_Bool | DFX_Bool |
| RFX_Byte | DFX_Byte |
| RFX_Int | DFX_Short |
| RFX_Long | DFX_Long |
| DFX_Currency | |
| RFX_Single | DFX_Single |
| RFX_Double | DFX_Double |
| RFX_Date * | DFX_Date (COleDateTime-base) |
| RFX_Text | DFX_Text |
| RFX_Binary | DFX_Binary |
| RFX_LongBinary | DFX_LongBinary |
La fonction RFX_Date est basée sur CTime et TIMESTAMP_STRUCT.
Voici les principaux changements de fonctionnalités qui peuvent affecter votre application et exigent des changements de nom plus simple.
Avec les classes ODBC MFC nécessaires pour définir ces options par le biais de macros ou énuméré les types.
Avec les classes DAO, DAO fournit la définition de ces options dans un fichier d'en-tête (DBDAOINT.H). donc le type de jeu d'enregistrements est un membre énuméré de CRecordset, mais avec DAO c'est une constante. Par exemple vous utiliseriez instantané lorsque vous spécifiez le type de CRecordset dans ODBC mais DB_OPEN_SNAPSHOT lors de la spécification du type de CDaoRecordset.
&Notenbsp ; Instantanés DAO (CDaoRecordset) sont en lecture seule, tandis que les instantanés de l'ODBC (CRecordset) peuvent être modifiable selon le pilote et l'utilisation de la bibliothèque de curseurs ODBC. Si vous utilisez la bibliothèque de curseurs, CRecordset instantanés sont actualisables. Si vous utilisez un des pilotes Microsoft Desktop Driver Pack 3.0 sans la bibliothèque de curseurs ODBC, les instantanés de CRecordset sont en lecture seule. Si vous utilisez un autre pilote, consultez la documentation du conducteur pour voir si les instantanés (STATIC_CURSORS) sont en lecture seule.
&Notes techniques par le numéro |nbsp ; Notes techniques par catégorie