更新:2007 年 11 月
| .gif) 说明: | 
|---|
| 从 Visual C++ .NET 起,Visual C++ 环境和向导不再支持 DAO(不过提供了 DAO 类,仍可供您使用)。Microsoft 建议对新项目使用 OLE DB 模板或 ODBC。DAO 只应用于维护现有的应用程序。 | 
使用哪一组 MFC 类?这取决于具体要求:
- 如果完全使用 ODBC 数据源,特别是在客户端/服务器情形中,MFC ODBC 类提供更好的性能,则使用 ODBC 类。 
- 如果主要使用 Microsoft Jet (.mdb) 数据库,或者 Microsoft Jet 数据库引擎可以直接读取的其他数据库格式,则使用 DAO 类。有关这些数据库的列表,请参见使用 DAO 和 ODBC 可以访问哪些数据库? 
- 当需要 Microsoft Jet 数据库引擎的速度和 DAO 类的额外功能时,通过 DAO 类访问 ODBC 数据源。 .gif) 说明: 说明:- DAO 需要额外的硬盘空间。 
DAO 类具有以下优点:
- 在某些情况下,特别是在使用 Microsoft Jet (.mdb) 数据库时,具有更佳的性能。 
- 与 ODBC 类兼容并且与 Microsoft Access Basic 和 Microsoft Visual Basic 兼容。 
- 可以访问校验规则。 
- 能够指定表之间的关系。 
- 更丰富的数据访问模型,并且支持数据定义语言 (DDL) 和数据操作语言 (DML)。有关更多信息,请参见 数据库定义和操作。 
下表汇总了主要差异,以帮助您进行选择。
在 MFC DAO 和 ODBC 类之间选择
| 可以进行下列操作 | 使用 DAO 类? | 使用 ODBC 类? | 
|---|---|---|
| 访问 .MDB 文件 | 是 | 是 | 
| 访问 ODBC 数据源 | 是 | 是 | 
| 可用于 16 位 | 否 | 是 | 
| 可用于 32 位 | 是 | 是 | 
| 可用于 64 位 | 否 | 是 | 
| 数据库压缩 | 是 | 否 | 
| 数据库引擎支持 | Microsoft Jet 数据库引擎 | 目标 DBMS | 
| DDL 支持 | 是 | 只通过直接 ODBC 调用 | 
| DML 支持 | 是 | 是 | 
| MFC 实现的特性 | DAO 核心函数的“包装” | 简化的抽象而不是 ODBC API 的“包装” | 
| 优化 | .mdb 文件 (Microsoft Access) | 任何有相应驱动程序的 DBMS,特别是在客户端/服务器情形中 | 
| 事务支持 | 基于每个解决方案,对于 ODBC 数据则基于每个数据库 | 基于每个数据库 | 
记住,ODBC 驱动程序的功能千差万别。有关更多信息,请参见 ODBC Programmer's Reference(《 ODBC 程序员参考》)和 ODBC 驱动程序的帮助文件。