数据库访问技术
时间:2012/9/28 作者:郑艺玮
一、数据库访问技术分类
1.ODBC(Open Database Connectivity,开放数据库互联)
概述:ODBC是20世纪80年代末90年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。现在,绝大多数主流关系数据库提供了ODBC驱动程序。利用ODBC API就可以访问这些数据库喽!下面的图为ODBC体系构架: ODBC驱动 程序管理器 ODBC驱 动程序 各种关系数据库
客户程序 ODBC体系构架
解释:此图为访问数据库的流程,我们所编写的客户程序直接和ODBC驱动程序管理器打交道,后者利用ODBC驱动程序所提供的API访问数据库。在访问不同数据库时,需要指定相应的ODBC驱动程序,而后者又由ODBC程序管理器去调用,它会将客户的请求转换为相应的ODBC驱动,传给数据库。
2.DAO(Data Access Object,数据访问对象)
概述:DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。
3.RDO(Remote Data Object,远程数据对象)
概述:由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),因此,可以为使用关系数据库的应用程序提供更好的性能。
4.OLE DB(对象链接与嵌入数据库)
概述:OLE DB在两个方面对ODBC进行了扩展。首先,OLE DB提供了一个数据库编程的COM接口;第二,OLE DB提供了一个可用于关系型和非关系数据源的接口,而ODBC只能访问
关系型数据库。通常我们据说的数据库都是指关系型数据库。但是数据库的概念,从广义上来说,除了关系型数据库以外,还包括其他格式的数据源,包括电子表格、文本文件。OLE DB的两个基本结构是OLE DB提供程序(Provider)和OLE DB用户程序(Consumer)。
使用ADO的客户程序 OLE DB用户程序 使用OLE DB访问数据库的程序 ADO OLE DB提供程序 ODBC ODBC 数据库 ODBC 数据库 电子表格 电子邮件 其他非关系型存储
此图:OLE DB体系结构图
解释:由上图可知,ADO和我们编写的OLE DB访问程序都属于OLE DB用户程序。如果采用ADO技术访问数据库的话,实际上调用过程是:ADO客户程序通过ADO再访问OLE DB提供程序,这样访问速度就要慢一些。但是因为ADO对自动化提供了很好的支持,所以在VBScript、VB这类语言中利用ADO访问数据库是很方便的。
OLE DB用户程序利用不同的OLE DB提供程序可以访问不同的数据源,包括关系型数据库、电子表格、电子邮件,以及其他的非关系型存储,只要这些数据源提供了相应的OLE DB提供程序。有时,数据源没有提供相应的OLE DB提供程序,我们还可以自己为这些数据源编写一个OLE DB提供程序。如果某个关系型数据库没有OLE DB的提供程序,那么可以利用访问ODBC的OLE DB提供程序去访问ODBC,然后再利用ODBC去访问支持ODBC的数据库。可见,OLE DB实现的功能是非常强大的。
5.ADO(ActiveX Data Object,ActiveX数据对象)
概述:ADO建立在OLE DB之上。ADO是一个OLE DB用户程序,即它本身也是一个Consumer。使用ADO的应用程序都要间接地使用OLE DB。ADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。
6.对以上几种技术总结
上述几种数据库访问技术中,DAO和RDO这两种技术已经很少使用了,随着时代的发展,它们将逐渐退出历史的舞台。而OLE DB和ADO这两种是比较新的技术。OLE DB的功能非常强大,但是它对自动化的支持不是很好。因此像一些自动化的脚本语言,例如VBScript就不能使用OLE DB访问数据库。为了更好地支持自动化,微软在OLE DB的基础上开发了ADO,
便于像VBScript这样的脚本语言,以及VB、Delphi这样的语言很方便地利用ADO去访问数据库。但是有一点需要注意,ADO本身是一个OLE DB的用户程序。VC++对利用OLE DB访问数据库提供了很好的支持,而且速度也比较快,我们可以利用VC++编写OLE DB用户程序。
二、ADO访问数据库
1.ADO知识点
Connection对象
Connection对象表示到数据库的连接,它管理应用程序和数据库之间的通信。下面将介绍的Recordset和Command对象都有一个ActiveConnection属性,该属性用来引用Connection对象。
Command对象
Command对象用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回的值的查询。
Recordset对象
Recordset对象用来获取数据。Recordset对象存放查询的结果,这此结果由数据的行(称为记录)和列(称为字段)组成。每一列都存放在Recordset的Files集合中的一个Field对象中。
2.操作步骤
大概的步骤:(开发环境为VS2005)
1.新建一个基于对话框的MFC应用程序。(一个列表框与一个按钮)
2.增加ADO控件:在菜单选项工具->选择工具箱项->COM组件->Microsoft ADO Data Control6.0(OLE DB)。
3.导入动态链接库:在程序的预编译头文件(stdafx.h)中导入该库,代码如:#import \
\。如果编译成功,会产生两个文件:msado15.tlh(头文件)和msado15.tli(源文件),其在Debug目录下? 解释:no-namespace没具体定义那个名称空间,方便访问ADO提供的Connection、Command和Recordset这三个COM接口。rename为重新命名,避免出现冲突。 4.将ADO控件拖放到窗口,右键打开属性->单击右上角的属性页小图标->选中单选按钮Use Connection String在其Build..按钮单击->在提供程序里选择Microsoft OLE DB Provider for SQL Server单击“下一步”->在“选择或输入服务器名称”单击下拉框,“输入登录服务器的信息”选择使用WindowNT集成安全设置->最后参数配置完成单击“测试连接”按钮。(此步骤只为得到一个连接字符串(ConnectionString),并无实际的应用)
相关推荐: