Alternatives
Strengths and weaknesses of the various database interfaces
| Interface | ADO.NET | ADO | DAO | RDO | OLE DB | ODBC | MFC ODBC |
| Object Model | ++ | + | + | + | - | + | |
| Non-relational data sources | + | - | - | + | - | - | |
| Low-level control | - | - | + | + | |||
| Performance | - | ++ | + | ||||
| Code-to-functionality ratio | + | + | - | - |
A big difference (or advantage) of ADO over DAO and RDO is that it does not keep collections of recordsets, queries or connections therefore requires less resources.
ADO - ActiveX Data Objects
ADO is much simpler to use than OLE DB and can be classified as a high-level database interface. Also, ADO can be used with more programming languages than OLE DB. ADO provides an Automation interface. This enables ADO to be used from scripting languages, such as VBScript and JavaScript.
ACE - Access Connectivity Engine
This replaces DAO for Office 2007+
DAO - Data Access Objects
DAO talks directly to Access/Jet databases. DAO can also communicate with other databases through the Jet engine.
The DAO object model is better suited to object-oriented development than a straight API.
Integrating a set of disparate API functions into an object-oriented application typically means that the developer must write her own set of classes to encapsulate the API functions.
Rather than provide merely a bunch of functions, DAO provides a set of objects for connecting to a database and performing operations on the data.
These DAO objects are easy to integrate into the source code of an object-oriented application.
RDO - Remote Data Objects
RDO was originally developed as an abstraction of the ODBC API for Visual Basic programmers.
Therefore, RDO is closely tied to ODBC and Visual Basic.
Public dbRDOConnect as ADODB.connection
Public dbRDORecordset as ADODB.recordset
Dim sConnectionStr as string
Dim sSQLQuery as string
SConnectionStr = "DSN =" & DatabaseName & ";"
"UID = " & UserId & ";"
"PWD =" & Password & ";"
Set dbRDOConnect as New RDOconnection
With dbRDOConnect
.Cursordriver = rdUseODDC
.Connect = sConnectionStr
.EstablishConnection rddrivernoprompt
End With
Set sSQLQuery = ""
DbRDOrecordset.Open = dbRDOConnect.OpenRecordset(
OLE DB - Object Linking and Embedding DataBase
OLE DB could be classified as a low-level database API.
OLE DB incorporates the functionality of ODBC for relational databases and expands on it by providing access to nonrelational data sources.
OLE DB is great for C++ programmers since it requires manipulation of interface pointers
ODBC - Open DataBase Connectivity
ODBC provides a single API for client applications to work with different databases.
Applications that use the ODBC API can communicate with any relational database for which there is an ODBC driver.
Compared to other database interfaces, the ODBC API could be classified as a low-level database interface.
The ODBC API enables client applications to configure and control the database at a relatively low level.
© 2026 Better Solutions Limited. All Rights Reserved. © 2026 Better Solutions Limited TopPrevNext