¿Cuáles son las ventajas y desventajas de ado, dao y odbc? ¿Cuál es más común y más prometedor ahora?
ADO
Desde ITwiki, la enciclopedia china abierta de TI
Salte a: navegación,
ADO de Microsoft (Datos ActiveX Objects) es un componente COM utilizado para acceder a fuentes de datos. Proporciona una capa intermedia para lenguajes de programación y métodos unificados de acceso a datos OLE DB. Permite a los desarrolladores escribir código que acceda a los datos sin preocuparse por cómo se implementa la base de datos, sino solo por la conexión a la base de datos. Al acceder a la base de datos, no es necesario tener conocimientos de SQL, pero los comandos SQL admitidos por una base de datos específica aún se pueden ejecutar a través del objeto de comando en ADO.
ADO está diseñado para heredar la capa de objetos de acceso a datos inicial de Microsoft, incluidos RDO (Objetos de datos remotos) y DAO (Objetos de acceso a datos). ADO fue lanzado en el invierno de 1996.
ADO contiene algunos objetos de nivel superior:
Conexión, que representa una conexión a la base de datos
Recordset, que representa una colección de registros de la base de datos
Comando, representa un comando SQL
Registro, representa una colección de datos
Stream, representa una colección secuencial de datos
Error, representa un error generado durante el acceso a la base de datos Inesperado
Campo, representa un campo de base de datos
Parámetro, representa un parámetro SQL
Atributo, guarda información del objeto
ADO componente Utilizando un lenguaje de alto nivel que soporta COM, como VBScript o Visual Basic en ASP, o incluso Delphi, un producto del competidor de Microsoft, Borland, ahora soporta el uso de ADO para acceder a la base de datos.
En el nuevo marco de programación .NET Framework, Microsoft también proporciona una versión de ADO orientada a Internet, llamada ADO.NET. Su modelo de objetos es muy diferente al ADO tradicional.
DAO
DAO (Objeto de acceso a base de datos) utiliza el motor de base de datos Microsoft Jet para acceder a la base de datos. Microsoft Jet proporciona el motor de datos para productos como Access y Visual Basic.
Al igual que ODBC, DAO proporciona un conjunto de API para programación. MFC también proporciona un conjunto de clases DAO que encapsulan la API subyacente, simplificando así enormemente el desarrollo del programa. Usando la clase DAO de MFC, los usuarios pueden escribir aplicaciones que sean independientes del DBMS.
DAO se introdujo a partir de Visual C++ versión 4.0. En términos generales, las clases DAO brindan un soporte más amplio que las clases ODBC. Por un lado, DAO que utiliza Microsoft Jet puede acceder a fuentes de datos ODBC siempre que exista un controlador ODBC. Por otro lado, debido a que DAO está basado en el motor Microsoft Jet, tiene un buen rendimiento al acceder a bases de datos de Access (es decir, archivos *.MDB).
Similitudes entre DAO y ODBC
La clase DAO tiene muchas similitudes con la clase ODBC, que incluyen principalmente los siguientes puntos:
Ambos Todos admiten acceso a varios Fuentes de datos ODBC. Aunque los motores de datos utilizados por los dos son diferentes, ambos pueden cumplir con los requisitos del usuario para escribir aplicaciones independientes de DBMS.
DAO proporciona clases MFC con funciones similares a ODBC. Por ejemplo, la clase CDaoDatabase de DAO corresponde a la clase CDatabase de ODBC, CDaoRecordset corresponde a CRecordset, CDaoRecordView corresponde a CRecordView y CDaoException corresponde a CDBException. Estas clases correspondientes tienen funciones similares y la mayoría de sus funciones miembro son las mismas.
AppWizard y ClassWizard brindan soporte similar para aplicaciones que usan objetos DAO y ODBC.
Dado que muchos aspectos de las clases DAO y ODBC son similares, es fácil para los usuarios aprender a usar DAO siempre que dominen ODBC. De hecho, los usuarios pueden migrar fácilmente aplicaciones de bases de datos de ODBC a DAO.
Visual C++ viene con un ejemplo llamado DaoEnrol, que en realidad es una versión DAO de Enroll. Los lectores pueden abrir el proyecto DaoEnrol y echar un vistazo. Su código fuente es muy similar al de Enroll. Los lectores pueden seguir los pasos para crear Inscribirse para crear DaoEnrol. Solo hay algunas diferencias, que son principalmente las siguientes:
Las fuentes de datos seleccionadas son diferentes. Cuando se utiliza AppWizard para crear DaoEnrol y cuando se utiliza ClassWizard para crear una clase derivada de la clase CDaoRecordset, se debe seleccionar DAO en lugar de ODBC en el cuadro de diálogo Opciones de base de datos. Además, la fuente de datos de DAO se especifica seleccionando un archivo .MDB, es decir, haciendo clic en el botón "..." y seleccionando el archivo .MDB al que se accederá en el cuadro de diálogo del archivo.
Los tipos predeterminados de conjuntos de registros son diferentes. El tipo predeterminado de conjunto de registros ODBC es Instantánea, mientras que DAO es Dynaset.
La forma de parametrización es diferente. Los parámetros en m_strFilter y m_strSort del conjunto de registros DAO no son números "?", sino un nombre de parámetro significativo. Por ejemplo, en el filtro siguiente hay un parámetro llamado CourseIDParam.
m_pSet->m_strFilter ="CourseID = CourseIDParam";
En la función DoFieldExchange, existen las dos líneas siguientes:
pFX->SetFieldType(CDaoFieldExchange :: param);
DFX_Text(pFX, _T("CourseIDParam"), m_strCourseIDParam);
El segundo parámetro de la función DFX también es CourseIDParam.
Las excepciones se manejan de manera diferente. Por ejemplo, al eliminar un registro, el manejo de excepciones es el siguiente:
try
{
m_pSet->Delete();
}
catch(CDaoException* e)
{
AfxMessageBox(e->
m_pErrorInfo->m_strDescription);
e->Delete();
}
Además de las diferencias anteriores, AppWizard y ClassWizard también ocultan algunas diferencias sutiles, como registros DAO. utiliza el mecanismo de intercambio de datos DFX (intercambio de campos de registro DAO) en lugar de RFX. En el DoFieldExchange del conjunto de registros DAO, se utiliza la función DFX en lugar de la función RFX.
10.8.3 Funciones de DAO
DAO puede acceder a fuentes de datos ODBC a través del controlador ODBC. Pero DAO se basa en el motor Microsoft Jet, a través del cual DAO puede acceder directamente a bases de datos como Access, FoxPro, dBASE, Paradox, Excel y Lotus WK. La clase CDaoDatabase puede conectarse directamente a estas bases de datos sin tener que registrar un DSN en el administrador de ODBC.
Por ejemplo, el siguiente código se utiliza para abrir una base de datos FoxPro:
CDaoDatabase daoDb;
daoDb.Open( "",FALSE,FALSE,"FoxPro 2.5;DATABASE=c: \\ zyf");
CDaoDatabase::La función Open se utiliza para conectarse a una base de datos. La declaración de esta función es:
virtual void Open( LPCTSTR lpszName, BOOL bExclusive = FALSO, BOOL bReadOnly = FALSO, LPCTSTR lpszConnect = _T("") );
throw( CDaoException, CMemoryException );