概述
ODBC技术为访问异类的SQL Server数据 库提供了一个共同的接口。ODBC使用SQL Server作为访问数据的标准。标准ODBC结构 的关系图,如图13-1所示。
13.2 数据访问技术概述
图13-1
标准ODBC结构关系图
13.2 数据访问技术概述
这一接口提供了最大限度的互操作性:一 个应用程序可以通过共同的一组代码访问不同 的SQL Server数据库
管理系统(DBMS)。 因此,开发人员可以构建并分布客户端/服 务器应用程序,而无需针对特定的 DBMS。 开发人员可以添加数据库驱动程序,将应 用程序与用户所选的 DBMS 联系起来。驱动 程序管理器提供应用程序与数据库之间的中间 链接。ODBC接口包含一系列功能,由每个 DBMS 的驱动程序实现。
13.2 数据访问技术概述
当应用程序改变它的 DBMS 时,开发人员 只使用新的 DBMS 驱动程序替代旧的驱动程 序,并且应用程序可以照常运行;无需修改代 码。
13.2 数据访问技术概述
2.DAO和RDO
ODBC使用低层接口,因此C和C++程序 员是ODBC技术受益最多的人。Visual Basic 程序员没有一种简单的方法来访问ODBC接口。 在Visual Basic 6.0 之前,开发人员只得应用 一种较高级别的数据访问模式——DAO(数据 库访问对象,Data Access Objects)。
DAO结构的关系图,如图13-2所示。
13.2 数据访问技术概述
图13-2
DAO结构关系图
13.2 数据访问技术概述
DAO是建立在 Microsoft Jet(Microsoft Access 的 数据库引擎)基础之上的。Jet 是第一个连接到 Access 的面向对
象的接口。使用 Access 的应用程序可以用 DAO直接访问数据库。
由于DAO是严格按照 Access 建模的,因此,使 用DAO是连接 Access 数据库最快速、最有效的方法。 DAO也可以连接到非 Access 数据库,如SQL Server 和 Oracle。
在DAO结构中使用ODBC,但是由于DAO是专门 设计用来与 Jet 引擎对话的,Jet 将解释DAO和ODBC 之间的调用。
13.2 数据访问技术概述
为此,DAO在使用除 Access 之外的数据 库时,这种额外的解释步骤导致较慢的连接速 度。为了克服这样的限制,Microsoft 创建了 RDO(远程数据对象,Remote Data Object)。 RDO结构关系图,如图13-3所示。RDO 可以直接访问ODBC API,而无需通过Jet引擎。 不久之后,Microsoft 推出了ODBC Direct,它 是DAO的扩展。
13.2 数据访问技术概述
图13-3 RDO结构关系图
13.2 数据访问技术概述
ODBC Direct结构关系图,如图13-4所 示。ODBC Direct可以通过现有的DAO应用程 序访问数据库,而没有 Jet 引擎产生的性能损 失。
13.2 数据访问技术概述
图13-4 ODBC Direct结构关系图
13.2 数据访问技术概述
3.OLE DB
多年以来,ODBC已成为访问客户端/服务 器关系数据库的标准。OLE DB是建立于 ODBC之上,并将此技术扩展为提供更高级数 据访问接口的组件结构。
此结构对企业中及Internet上的SQL Server、非SQL Server和非结构化数据源提供 一致的访问。(实际上,在访问基于SQL Server的数据时,OLE DB仍使用ODBC,因 为对于SQL Server它是最优结构。)
13.2 数据访问技术概述
OLE DB 由三个组件构成:数据使用者 (如一个应用
程序)、包含并公开数据的数据提 供程序和处理并传输数据的服务组件(如查询 处理器、游标引擎)。 OLE DB结构关系图,如图13-5所示。 OLE DB 是一个针对SQL Server数据源和非 SQL Server数据源(例如,邮件和目录)进行操 作的 API。
13.2 数据访问技术概述
图13-5 OLE DB结构关系图
13.2 数据访问技术概述
4.ADO
OLE DB为C和C++ 程序员及使用其他包 含C样式函数调用语言的程序员提供了绑定。 但有一些语言(例如VB和
VBScript)不提供指针 数据类型(地址变量)。因此,这些语言不能使 用C样式绑定,而且不能直接调用OLE DB。 在此基础上,Microsoft 推出了另一个数据 访问对象模型——ADO(ActiveX数据对象, ActiveX Data Objects)。
13.2 数据访问技