2023年11月30日发(作者:)
ADO简介
简介
ActiveXDataObjects(ADO)是微软最新的数据访问技术。它被设计用来同新的数据访问层
OLEDBProvider一起协同工作,以提供通用数据访问(UniversalDataAccess)。OLEDB
是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电
子邮件系统及自定义的商业对象。
ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation封装接口。对那些熟悉
RDO的程序员来说,你可以把OLEDB比作是ODBC驱动程序。如同RDO对象是ODBC
驱动程序接口一样,ADO对象是OLEDB的接口;如同不同的数据库系统需要它们自己的
ODBC驱动程序一样,不同的数据源要求它们自己的OLEDB提供者(OLEDBprovider)。
目前,虽然OLEDB提供者比较少,但微软正积极推广该技术,并打算用OLEDB取代ODBC。
ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存
占用(已实现ADO2.0的需要占用342K内存,比RDO的的368K
略小,大约是DAO3.5的所占内存的60%)。同传统的数据对象层次(DAO
和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以
有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作
了优化。
本文的目的是带你进入ADO广阔的世界并开始使用它。
在哪里能得到ADO?
目前ADO1.5版已经可以从微软网站免费下载。到目前为止,微软网站仍是你获取有关ADO
最新信息的最佳场所。ADO1.5是作为OLEDBSDK的一部分提供的。你可以从下面这个网
址下载:
/data/oledb/
在下载之前请先确认OLEDBSDK提供的各项特性。下载文件大约有15M,如果完全安装
的话要占用80M的硬盘空间。如果你只对ADO感举趣,就选择最小安装,这样只会占用
你15M的硬盘空间。关于ADO的网页在:
/data/ado/.
在这里你可以找到许多关于ADO的示例代码和文章,尤其是在"Workshop"系列的文章中。
你也可以从本站下载ADO2.5的帮助文件。
尽管OLEDBSDK提供自己的ADO帮助文件,你会发现ADO1.0的帮助文件更易于使用。
同时它还向你提供ADO对象模型的图示
ADO是如何组织起来的?
以前的对象模型,如DAO和RDO是层次型的。也就是说一个较低的数据对象如Recordset
是几个较高层次的对象,如Environment和QueryDef,的子对象。在创建一个QueryDef
对象的实例之前,你不能创建DAORecordset对象的实例。但ADO却不同,它定义了一组
平面型顶级对象.
最重要的三个ADO对象是Connection,Recordset和Command.本文将主要介绍
Connection和Recordset这两个对象。每个Connection的属性定义了与数据源的连接。
Recordset对象接收来自数据源的数据。Recordset可以与Connection一起起使用,先建
立一个连接,然后获取数据。尽管如此,Recordset也可以被单独创建,其Connection参
数可以在Open属性定义。
如何使用ADO?
一旦安装了ADO,在VB的工程->引用对话框中你就可以看到象下图所示的东西了:
选择"ActiveXDataObjects1.5Library"(ADODB).在其下的"ADORecordset1.5Library"是一个
客户端的版本(ADOR),它定义了有聚的数据访问对象。ADOR对于客户端的数据访问来说是
足够的了,因为你不需要Connection对象来建立与远程数据源的联系。
如果你想要访问更多的外部数据源,你需要安装这些外部数据源自己的OLEDBProvider,
就象你需要为新的数据库系统安装新的ODBC驱动程序一样。如果该外部数据源没有自己
的OLEDBProvider,你就得使用OLEDBSDK来自己为这个外部数据源创建一个
OLEDBProvider了。这已不是本文讨论的范围了。
示例
下面的示例代码以Northwinds数据库作为远程数据源,然后用ADO来访问它。首先在控
制面板中打开“32位数据源”,单击“添加”按钮。在弹出的对话框中选择
"MicrosoftAccessDriver(*.mdb)"作为数据源驱动程序。
然后按下图所示,在对话框中填写下面的内容
选择数据库Northwinds所在路径。单击完成,退出ODBC设备管理器。
启动一个新的VB工程,在窗体的Load事件中输入下面的代码:
PrivateSubForm_Load()
tion
Setcn=tion
'SetConnectionproperties
tionString="DSN=RDCNwind;UID=;PWD=;"
tionTimeout=30
=adStateOpenThen_
MsgBox"ConnectiontoNorthWindSuccessful!"
EndSub
按F5运行程序,看看,一个消息框弹出来告诉你连接成功了。请注意,这里我特别注明了
是tion,而不是tion,这样做是为了将二者区分开(如果你引
用了ADODB和ADOR的话,这样做很有必要)。连接字符串看上去同RDO的连接字符
串差不多。事实上,二者确实差不多。
如果我们要访问一个SQLserver数据库,你的Connection代码看上去应象下面所示:
'设置连接属性er="MSDASQL"
tionString="driver={SQLServer};"&"server=prod1;uid=bg;pwd=;database=main
"
"Provider"属性指向SQLServer的OLEDBProvider.
回到我们的示例程序,让我们创建一个Recordset对象来访问“Orders”表,并从该表的
"ShipCountry"字段中产生头十个不重复的国家名。修改窗体Load事件中的代码,让它看上
去象下面这样。
PrivateSubForm_Load()
不幸的是,目前这个Recrodset对象是只读的和forwardcursor。如果你想要获取更多的功
能,你需要创建一个独立的Recordset对象,该对象拥有自己的Connection属性,就象下
面的代码所示:
PrivateSubForm_Load()
set
DimsSQLAsString
DimsOutAsString
DimCountAsInteger
Setrs=set
sSQL="untryFROMOrders"
QL,"DSN=RDCNwind;UID=;PWD=;",adOpenDynamic
'ReportRecordsetConnectioninformation
Connection,,"ConnectionInfo"
'Enumeratetherecordset
sOut=""
ForCount=1To10
sOut=sOut&rs("ShipCountry")&vbCrLf
xt
NextCount
总结
本文仅向你介绍了ADO强大的功能的冰山一角。微软承诺,在将来ADO将会取代DAO和
RDO。所以现在你应该考虑如何将你的数据访问代码投向ADO的怀抱。这种转变不会很痛
苦,因为ADO的语法同现有的语法差不多。也许微软或第三方会在将来开发出转换向导来
简化这一转换过程。从现在起,你就应开发纯ADO代码的程序。你也可以继续使用DAO
或RDO代码来开发你的程序,但落伍的感觉总是不好的。->


发布评论