ADO
一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在MicrosoftVisualBasic编辑器中,可以使用ADO对象以及ADO的附加组件(称为MicrosoftADOExtensionsforDLLandSecurity(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。
1、简介
ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML文件中。当用户从网站请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。
像Microsoft的其它系统接口一样,ADO是面向对象的。它是Microsoft全局数据访问(UDA)的一部分,Microsoft认为与其自己创建一个数据,不如利用UDA访问已有的数据库。为达到这一目的,Microsoft和其它数据库公司在它们的数据库和Microsoft的OLE数据库之间提供了一个“桥”程序,OLE数据库已经在使用ADO技术。ADO的一个特征(称为远程数据服务)支持网页中的数据相关的ActiveX控件和有效的客户端缓冲。作为ActiveX的一部分,ADO也是Microsoft的组件对象模式(COM)的一部分,它的面向组件的框架用以将程序组装在一起。
ADO从原来的Microsoft数据接口远程数据对象(RDO)而来。RDO与ODBC一起工作访问关系数据库,但不能访问如ISAM和VSAM的非关系数据库。
ADO是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,它是一种功能强大的数据访问编程模式,从而使得大部分数据源可编程的属性得以直接扩展到你的ActiveServer页面上。可以使用ADO去编写紧凑简明的脚本以便连接到OpenDatabaseConnectivity(ODBC)兼容的数据库和OLEDB兼容的数据源,这样ASP程序员就可以访问任何与ODBC兼容的数据库,包括MSSQLSERVER、Access、Oracle等等。
比如,如果网站开发人员需要让用户通过访问网页来获得存在于IBMDB2或者Oracle数据库中的数据,那么就可以在ASP页面中包含ADO程序,用来连接数据库。于是,当用户在网站上浏览网页时,返回的网页将会包含从数据库中获取的数据。而这些数据都是由ADO代码做到的。
ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。为实现这一目标,微软在数据库和微软的OLEDB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。开发人员在使用ADO时,其实就是在使用OLEDB,不过OLEDB更加接近底层。ADO的一项属性-远程数据服务,支持“数据仓库”ActiveX组件以及高效的客户端缓存。作为ActiveX的一部分,ADO也是COM组件的一部分。ADO是由早期的微软数据接口——远程数据对象RDO演化而来的。RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。
ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation封装接口。对那些熟悉RDO的程序员来说,你可以把OLEDB比作是ODBC驱动程序。如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLEDB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLEDB提供者(OLEDBprovider)。但微软正积极推广该技术,并打算用OLEDB取代ODBC。
ADO向VB程序员提供了很多好处。包括易于使用,熟悉的界面,高速度以及较低的内存占用(已实现ADO2.0的Msado15.dll需要占用342K内存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占内存的60%)。同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。ADO针对客户/服务器以及WEB应用程序作了优化。
2、定义
ADO是一项微软的技术
ADO指ActiveX数据对象(ActiveXDataObjects)
ADO是一个微软的Active-X组件
ADO会随微软的IIS被自动安装
ADO是一个访问数据库中数据的编程接口
3、从ASP页面访问数据库
从一个ASP页面内部访问数据库的通常的方法是:
创建一个到数据库的ADO连接
打开数据库连接
创建ADO记录集
从记录集提取您需要的数据
关闭记录集
关闭连接
4、接口简介
ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
1、_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。
2、_CommandPtr接口
返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
3、_RecordsetPtr接口
是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。
4、接口间的区别与联系
使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用_RecordsetPtr来实现。而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordsetPtr时不需要。
在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。
同_CommandPtr接口一样,_RecordsetPtr接口不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。
5、ADO事件
ActiveX数据对象(ADO)是添加到MicrosoftActiveServerPages(ASP)的一套高级别接口,有利于服务器端与数据库的连接。ADO与低级别接口(OLEDB)一起使用则有利于MicrosoftUniversalDataAccess策略。ADO2.0版可生成VisualStudioAnalyzer事件。可使用这些事件跟踪分布式应用程序中的ADO交互。
ADO生成的VisualStudioAnalyzer事件
事件事件描述事件数据
ConnectionClose指示ADO要与OLEDB数据源断开连接。无。
ConnectionOpen指示ADO正在连接到OLEDB数据源。如果客户端提供,则为连接到数据源所用的连接字符串。
Find指示ADO客户端已调用ADORecordset.Find函数。“查找”操作的判据;根据该判据匹配记录。
GetRows指示ADO客户端已调用ADORecordset.GetRows函数。提取的行数。
QueryResult指示数据库已返回响应查询的结果集。无。
QuerySend指示ADO正在执行命令。该事件可由下列函数触发:
Connection.Execute
Command.Execute
Connection.
Recordset.Open构成查询的SQL语句。
RecordsetOpen指示ADO正在打开远程服务器上的记录集。仅适用于三层方案。打开记录集的源(通常为行返回的命令文本)。
Sort指示ADO准备筛选或对数据排序。排序或筛选应用于记录集数据的判据。
TransactionRollback指示ADO要中止当前本地事务。返回真或假。如果为真,则保持中止,即该事务中止后紧跟着开始另一事务。如果为假,则不保持中止。
TransactionCommit指示ADO正在提交OLEDB提供程序上的本地事务。返回真或假。如果为真,则保留提交,即该事务提交后紧跟着开始另一事务。如果为假,则不保留提交。
TransactionStart指示ADO正在开始OLEDB提供程序上的本地事务。ADO开始事务所基于的隔离级别。隔离级别指示可看到其他事务所做更改的哪一级别。
UpdateBatch指示ADO正在向提供程序发送更新批处理。仅适用于三层方案。如果有,为ADO将更新发送到的远程服务器名。
6、组织形式
以前的对象模型,如DAO和RDO是层次型的。也就是说一个较低的数据对象如Recordset是几个较高层次的对象,如Environment和QueryDef,的子对象。在创建一个QueryDef对象的实例之前,你不能创建DAORecordset对象的实例。但ADO却不同,它定义了一组平面型*对象.。
最重要的三个ADO对象是Connection,Recordset和Command.本文将主要介绍Connection和Recordset这两个对象。每个Connection的属性定义了与数据源的连接。Recordset对象接收来自数据源的数据。Recordset可以与Connection一起起使用,先建立一个连接,然后获取数据。尽管如此,Recordset也可以被单独创建,其Connection参数可以在Open属性定义。
7、ADO2.0特点
对于ADO1.5以前包括1.5的版本来说,从功着你可以通过这两种方法解决同样的问题;它不是指存在重命名的或者优化的功能相同的对象.因此,移植到ADO不是一个简单的事情.从另一方面来说,一旦你熟练掌握了RDO或DAO技术的话,学习ADO是件相当容易的事情.
ADO2.0的新特性包括事件处理,记录集的延续,分层目录结构指针和数据成形,分布式事务处理,多维数据,远程数据服务(RDS),以及对C++和Java的支持的增强.在钻研一些VisualBasic代码的时候将会见到所有的这些特性.当使用VisualJ++时,我将举例说明新的WindowsFoundationClasses(WFC)是如何支持ADO的.ADO的最让人激动的是在VisualStudio6.0中的任何开发工具中你都可以找到对它的充分的支持.
8、编程模型
连接数据源(Connection),可选择开始事务。
可选择创建表示SQL命令的对象(Command)。
可选择指定列、表以及SQL命令中的值作为变量参数(Parameter)。
执行命令(Command、Connection或Recordset)。
如果命令以行返回,将行存储在存储对象中(Recordset)。
可选择创建存储对象的视图以便进行排序、筛选和定位数据(Recordset)。
编辑数据。可以添加、删除或更改行、列(Recordset)。
在适当情况下,可以使用存储对象中的变更对数据源进行更新(Recordset)。
在使用事务之后,可以接受或拒绝在事务中所做的更改。结束事务(Connection)。