Visión general
En muchas situaciones puede ser conveniente para migrar las aplicaciones que utilizan las clases de base de datos ODBC de MFC para clases de base de datos DAO de MFC. Esta nota técnica detallaremos la mayoría de las diferencias entre las clases DAO y ODBC de MFC. Teniendo en cuenta las diferencias, no debería ser demasiado difícil migrar aplicaciones de las clases ODBC a las clases MFC si lo desea.
¿Por qué migrar de ODBC para DAO?
Hay una serie de razones por las que desee migrar aplicaciones de las clases de base de datos de ODBC con las clases de base de datos DAO, pero la decisión no es necesariamente simple o evidente. Una cosa a tener en cuenta es que el motor de base de datos de Microsoft Jet utiliza DAO puede leer cualquier origen de datos ODBC para que tenga un controlador ODBC. Puede resultar más eficaz utilizar las clases de base de datos de ODBC o llamar ODBC directamente usted mismo, pero el motor de base de datos de Microsoft Jet puede leer datos ODBC.
Hay algunos casos sencillos que facilitan la decisión de ODBC/DAO. Por ejemplo, cuando sólo necesita acceso a los datos en un formato que el motor Microsoft Jet puede leer directamente (formato de Access, FoxPro formato, formato de Excel y así sucesivamente) la elección obvia es utilizar las clases de base de datos DAO.
Casos más complejos surgen cuando los datos existen en un servidor o en una variedad de diferentes servidores. En este caso, la decisión de utilizar las clases de base de datos ODBC o las clases de base de datos DAO es difícil. Si desea hacen cosas como combinaciones heterogéneas (combinación de datos desde servidores en múltiples formatos como SQL Server y Oracle) y, a continuación, el motor de base de datos de Microsoft Jet realizará la combinación para en lugar de forzar a hacer el trabajo necesario si utiliza las clases de base de datos de ODBC o había llamado ODBC directamente. Si está utilizando un controlador ODBC que sea compatible con cursores de conductor, su mejor opción podría ser las clases de base de datos ODBC.
La elección puede ser complicada, así que puede que desee escribir algún código de ejemplo para probar el rendimiento de los distintos métodos, teniendo en cuenta sus necesidades especiales. Esta nota técnica asume que han tomado la decisión de migrar de las clases de base de datos de ODBC a las clases de base de datos DAO.
Similitudes entre las clases de base de datos ODBC y clases de base de datos DAO de MFC
El diseño original de las clases MFC ODBC se basa en el modelo de objeto DAO que ha estado en uso en Microsoft Access y Microsoft Visual Basic. Esto significa que existen muchas características comunes de las clases ODBC y DAO MFC, que no todos se muestran en esta sección. En general, los modelos de programación son los mismos.
Para resaltar algunas similitudes:
Por ejemplo, en ambos modelos es el procedimiento para recuperar los datos para crear y abrir un objeto de base de datos, crear y abrir un objeto recordset y navegar (mover) aunque los datos realizando alguna operación.
Diferencias entre clases de MFC DAO y ODBC
Las clases DAO incluyen más objetos y un conjunto de métodos más rico, pero esta sección sólo detallaremos las diferencias de clases similares y funcionalidad.
Probableme&nte las diferencias entre las clases más evidentes son los cambios de nombre para clases similares y funciones globales. La siguiente lista muestra el ofnbsp de los cambios de nombre; los objetos, métodos y funciones globales asociadas con las clases de base de datos:
| Clase o función | Equivalente en las clases DAO de MFC |
| CDatabase | CDaoDatabase |
| CDatabase::ExecuteSQL | CDaoDatabase::Execute |
| CRecordset | CDaoRecordset |
| CRecordset::GetDefaultConnect | CDaoRecordset::GetDefaultDBName |
| 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 función RFX_Date se basa en la clase CTime y TIMESTAMP_STRUCT.
A continuación se enumeran los principales cambios en la funcionalidad que pueden afectar a su aplicación y requieren cambios de nombre más simple.
Con las clases ODBC de MFC necesarias para definir estas opciones mediante macros o enumera tipos.
Con las clases DAO, DAO proporciona la definición de estas opciones en un archivo de encabezado (DBDAOINT.H). así, el tipo de recordset es un miembro enumerado de CRecordset, pero con DAO es una constante en su lugar. Por ejemplo se utilizaría instantánea cuando se especifica el tipo de CRecordset en ODBC, pero DB_OPEN_SNAPSHOT cuando se especifica el tipo de CDaoRecordset.
&Notanbsp; Instantáneas DAO (CDaoRecordset) son de sólo lectura mientras instantáneas ODBC (CRecordset) pueden ser actualizables en función del controlador y uso de la biblioteca de cursores ODBC. Si está utilizando la biblioteca de cursores, CRecordset instantáneas son actualizables. Si está utilizando alguno de los controladores de Microsoft desde Desktop Driver Pack 3.0 sin la biblioteca de cursores ODBC, las instantáneas de CRecordset son de sólo lectura. Si está utilizando otro controlador, compruebe la documentación del conductor para ver si las instantáneas (STATIC_CURSORS) son de sólo lectura.
&Notas técnicas por número |nbsp; Notas técnicas por categoría