1、ADO是Active Data Object缩写,是针对当前Microsoft软件所支持的数据进行操作的最有效、最简单、功能最强大的方法。它能自如地控制数据的显示、查询以及对数据的修改、删除和添加。通过本章学习,应该掌握以下内容:ADO各种对象和集合 利用ADO存取组件进行数据库连接利用Dreamweaver编辑各种超连接的方法,第12章 利用ADO实现网页与 数据库的链接,12.1 利用ADO编写新闻发布系统,新闻发布系统能带给浏览者许多的方便,就像布告栏一样,可以让在校师生和外界单位了解学校当天或是最近发生的大事,以及公布短期内学校的主要工作计划等等。具体来说,使用ADO数据库链接技术来完
2、成输入新闻和查看新闻,需要用链接对象的Open方法来建立数据库链接,用链接对象的Execute方法来执行SQL查询语句和操作命令(把新闻信息保存到数据库、或者从数据库中查找新闻信息),还需要使用ADO记录集来显示新闻(把数据库中找出来的新闻以一定的格式显示到新闻发布系统)。书上给出了示例中新闻发布系统得源代码以及一些解释。,12.2 ADO概述ADO定义了三个一般对象:Connection对象、Command对象和Recordset对象,通过这三个对象,用户可以方便地建立数据库连接、执行SOL查询及存取查询的结果。下面列出了ADO的重要接口:Connection (连接):该对象代表打开的文件
3、与数据源的连接。Error(错误集):包含在响应涉及提供者的单个失败时产生的所有Error对象。 Command(命令):该对象定义了对数据源执行的指定命令。 Parameter(参数):这个接口表示传给Command的参数。 Recordset(游标):这是功能最强大但最复杂的接口,它含有包含数据的游标。用户可使用Recordset对象操作来自提供者的数据。 Field(字段):该接口表示Recordset对象中的某一列数据,同时能返回游标对象的一些关于数据本身的属性和参数。 Property(属性):包含特定对象实例的所有Property对象。,12.3 Connection对象 Conn
4、ection对象是数据源的一个开放连接。它跟踪正在使用的DSN连接保持的时间以及其他定义的数据库的属性。12.3.1 Connection对象的方法1Open方法 Connection对象的Open方法用来初始化一个连接,只有使用了Connection对象的Open方法后,Connection对象才会真正存在,然后才能发命令对数据源产生作用。通常在使用Open方法时有如下两种途径:(1)直接将连接字符串传给Open方法(2)利用它的ConnectionString属性 ,2Close方法当调用了Close方法后,系统就停止了同数据源之间的连接,并且释放与连接有关的系统资源。当调用此方法时,不只
5、是关闭Connection对象,而且还关闭了其他正在使用该Connection对象的ADO对象。不过Close方法只是释放与其相关的系统资源,Connection对象本身并没有释放。因此,一个关闭的Connection对象还可以接着用Open方法打开,而不用再次创建。要真正释放所有其占用的资源,只需:3BeginTrans方法ADO的一个重要的功能是执行并控制数据源的事务操作。事务即在一次操作中对数据库的多次写的动作。一次事务活动要么全部成功,要么全部失败。使用事务的好处在于它能提供很好的机会优化对数据源进行写操作的过程。它让ADO知道任何对数据源的修改还都没有写到硬盘上,还在缓冲区中。往缓冲
6、区中写东西要比硬盘快得多,这样就能够大大的提高系统性能。,4CommitTrans方法当BeginTrans方法被调用后,数据并没有写到硬盘,所以Connection调用CommitTrans方法把所有的数据写到硬盘上。该方法把一次事务的操作一次全部写到硬盘上。然后就关闭此次事务。5Execute方法Connection的主要任务是在最高层控制与数据源之间的交互作用,但是该对象也能执行SQL语句及存储过程。但是利用Connection对象返回数据时,要抽取的信息是基本的游标即只能读和只能向前的游标。 使用Execute方法的基本语句是:Set myRecordset=Conn.Execute(
7、CommandText.RecordAffected. Options)其中:CommandText:是一个字符串,它包含一个表名、或某个将被执行的SQL语句。RecordAffected:是个变量,数据提供者将它返回此次操作所影响的记录数。Options:用来指定Commandstring参数的性质。,6RollbackTrans方法这个方法和CommitTrans方法相反,它是取消此次事务以来对数据源所做的所有操作,并不写入数据源。同CommitTrans方法一样,调用此方法,本次事务结束。 12.3.2 Connection的属性Connection对象的属性是用来控制高级的数据处理。1
8、Attributes属性该属性定义了对象一个或多个特点。对于Connection对象来说,Attributes属性控制着事务成功或失败后Connection要如何向数据库写数据。如果Attributes设置为262144或者adX- actAbortRetaining的ADODB的常量,那么如果事务被取消,另一个事务会自动启动。2Mode属性Mode属性用来表示连接的写权限,只能在Connection对象没有打开的情况下进行设置。3Version属性该属性用来查询ADO的版本号。,4Provider属性该属性用来设置或返回数据来源的名字。它的缺省值是ODBC数据来源,对于OLE DB,它的返回
9、值为“MSDASQL”。5CommandTimeout属性该属性定义了允许对数据源的操作终止并产生一个错误的等待时间。可用它的属性来定义连接业务很大或服务器很忙时如何操作。 6Connectionstring属性该属性将返回一个字符串,它包含创建数据连接时所用的所有信息。它可以是DNS,也可以是连接数据源时的所有参数。 7DefaultDatabase属性使用DefaultDatabase属性可设置或返回指定Connection对象上默认数据库的名称。 如果有默认数据库,SQL字符串可使用非限定语法访问该数据库中的对象。如要访问DefaultDatabase属性中指定数据库以外的数据库中的对象
10、,对象名必须与所需的数据库名称匹配。连接时,提供者将默认数据库信息写入DefaultDatabase属性。某些提供者对于每个连接只允许一个数据库,在此情况下将不能更改DefaultDatabase属性。,12.4 Recordset对象Recordset是ADO的一个非常重要的对象。ADO一半以上的文档都是关于Recordset的。12.4.1 Recordset方法1打开、关闭和复制Recordset的方法(1)Open方法 Open方法是用来打开一个给予ActiveConnection和Source属性的Recordset。在把连接和原信息作为参数传给Recordset的Open方法时,游
11、标被打开且该方法所有相应的属性值也被继承下来。(2)Close方法 Close方法用于关闭Recordset对象并释放相关资源。同Connection对象一样,在调用setRecordSet=nothing之前,它仍然存在,只需要重新打开,而不需要创建。在允许关闭当前编辑的记录前,必须首先调用Cancelupdate或Update方法,否则会出现错误。但是,如果以批量模式更新记录,那么对缓冲区记录所做的修改将全部丢失。(3)Clone方法 Clone方法用来创建一个Recordset对象的完全拷贝。采用该方法,可以为任何Recordset维持多个当前的记录。但是只有所用的Recordset类型
12、允许使用BookMa-rks时才能使用这种方法。,2编辑修改数据的方法(1)addNew方法 addNew方法用来向数据库中增加新纪录。调用该方法时即在Rec-ordset中开始一个新行,并将指针移到行首以准备加入新的数据。是效率最低的一种修改方法,最好用SQL来实现。(2)Delete方法 Delete方法用来删除当前记录。它与addNew方法一样效率很低,但是它能够批量删除。当在批量模式相关联的Recordset中使用Delete方法时,Delete方法只是将当前记录作上删除标记。通过这种方法Recordset可以处理数据缓冲集合。(3)Update方法 Update方法表示将对Recor
13、dset对象中的当前记录的任何修改保存在数据源中,条件是Recordset能够允许更新且不是工作在批量更新模式下。(4)CancelUpdate方法 CancelUpdate方法用来取消在调用Update方法前所作的一切修改。(5)UpdateBatch方法 如果工作在批量更新模式下,该方法将取消对Recordset的修改。当取消一个批量操作时,可以指定缓冲区的一个子集,以采用CancelBatch方法的一些Affe-ctrecords变量在其上面的操作。,12.4.2 Recordset属性 1MarshalOptions属性该属性指示要被调度返回服务器的记录。 2AbsolutePage属
14、性该属性指定当前记录所在的页。 3AbsolutePosition属性该属性指定Recordset对象当前记录的序号位置。 4Bookmark属性该属性返回唯一标识Recordset对象中当前记录的书签,或者将Reeordset对象的当前记录设置为由有效书签所标识的记录。 5CacheSize 属性该属性指示缓存在本地内存中的Recordset对象的记录数。 6CursorType 属性该属性指示在Recordset对象中使用的游标类型。 7Filter属性该属性为Recordset中的数据指定筛选条件。,8Index属性该属性指示对Recordset对象当前生效的索引的名称。 9LockTy
15、pe属性该属性指示编辑过程中对记录使用的锁定类型。 10MaxRecords属性该属性指示通过查询返回Recordset记录的最大数目。 11PageCount属性该属性指示Recordset对象包含的数据页数。 12PageSize属性该属性指示Recordset中一页所包含的记录数。默认值为10。 13RecordCount属性该属性指示Recordset对象中记录的当前数目。 14Sort属性该属性指定一个或多个Recordset对象中排序的字段名,并指定按升序还是降序对字段进行排序。,15Source属性该属性指示Recordset对象中数据的来源。 16State属性该属性对所有可应
16、用对象,说明其对象状态是打开或是关闭。对执行异步方法的Recordset对象,说明当前的对象状态是连接、执行或是获取。 12.5 Command对象Command对象表示一个可被数据源处理的命令。这个对象提供一种很简单的方法来处理查询或者存储过程。利用Command对象,可以表示一个命令字符串、存储过程或一个表名。 1Command对象的方法 (1)CreateParameter方法CreateParameter方法使用指定属性创建新的Parameter对象,并在执行之前加到Command对象的Parameter集合中。Parameter对象表示传给SQL语句或存储进程的一个数。 (2)Exe
17、cute方法该方法执行在CommandText属性中指定的查询、SQL语句或存储过程。其方法与前面介绍的Connection的Execute方法类似。,2Command的属性 (1)ActiveConnection属性该属性指示指定的Command或Recordset对象当前所属的Connection对象。 (2)CommandText属性该属性包含要根据提供者发送的命令的文本。 (3)CommandTimeout属性该属性指示在终止尝试和产生错误之前执行命令期间需等待的时间。 (4)CommandType属性该属性指示Command对象的类型。 (5)Prepared属性该属性指示执行前是否
18、保存命令的编译版本。,12.6 Errors集合和Error对象Connection对象有一个Errors集合,用来返回ADO在操作过程中发生的错误。但是这个Errors集合并不包括会话过程中发生的错误,而只是某一个操作所引起的错误。任何涉及ADO对象的操作都可以产生一个或多个提供者错误。产生错误时,可以将一个或多个Error对象置于Connection对象的Errors集合中。其他ADO操作产生错误时,将清空Errors集合,并且将新的Error对象置于Errors集合中。 1Errors集合的方法 (1)Clear方法该方法删除集合中的所有对象。 (2)Item方法该方法根据名称或序号返回
19、集合的特定成员。 2Errors的属性一Count属性该属性指示集合中对象的数目。 3Error对象Error对象包含与单个操作(涉及提供者)有关的数据访问错误的详细信息。,4Error属性 (1)Description属性该属性描述Error对象。 (2)HelpContext、HelpFile属性该属性指示与Error对象关联的帮助文件和主题。 (3)NativeError属性该属性指示给定Error对象的、特定提供者的错误代码。 (4)Number属性该属性指示用于唯一标识Error对象的数字。 (5)Source属性 (ADO Error)该属性指示产生错误的原始对象或应用程序的名称。
20、 (6)SQLState属性 该属性指示给定Error对象的SQL状态。,12.7 Parameters集合和Parameter对象Parameters集合包含Command对象的所有Parameter对象. 1Parameters集合的方法 (1)Append方法该方法将对象追加到集合中。如果集合是Fields,可以先创建新的Filed对象然后再将其追加到集合中。 (2)Delete方法该方法从Parameters集合中删除对象。 2Parameter集合的属性Count属性: 它指示集合中对象的数目。Item属性:它用来返回集合中某一个参数。它有一个索引值,它即可以是所要的参数在Param
21、eters集合中的参数值,也可以是参数的名字。 3Parameter对象的方法AppendChunk方法 该方法将数据追加到大型文本、二进制数据Field或Parameter对象。,4Parameter对象的属性 (1)Direction属性该属性指示Parameter所标明的是输入参数、输出参数还是既是输出又是输入参数或该参数是否为存储过程返回的值。 (2)Name属性Name属性指示对象的名称。 (3)NumericScale属性该属性指出Parameter或Held对象中数字值的范围。 (4)Precision属性该属性指示在Parameter对象中数字值或数字Field对象的精度。 (
22、5)Size属性该属性表示Parameter对象的最大大小(按字节或字符)。 (6)Value属性该属性指示赋给Field、Parameter或Property对象的值。,12.8 Fields集合和Field对象Fields集合包含Recordset对象的所有Field对象。Recordset对象包括Field对象组成Fields集合。每个Fields 对象对应其中的一列。在通过调用集合上的Refresh方法打开Recordset前可以填充Fields集合。 1Fields集合的方法及属性 (1)Append方法Append方法将对象追加到集合中。如果集合是Fields,可以先创建新的Fie
23、ld对象然后再将其追加到集合中。 (2)Item方法Item方法根据名称或序号返回集合的特定成员。 (3)Delete方法Delete方法表示从Fields集合中删除对象。 (4)Refresh方法该方法更新集合中的对象以便反映来自提供者的可用对象和特定于提供者的对象。 (5)Fields集合的属性Fields集合的属性只有Count属性,它指示集合中对象的数目。,2Field对象的方法 (1)AppendChunk方法该方法将数据追加到大型文本、二进制数据Field或Parameter对象。 (2)GetChunk方法该方法返回大型文本或二进制数据Field对象的全部或部分内容。 3Fiel
24、d对象的属性 (1)ActualSize属性 该属性指示字段的值的实际长度。 (2)DefinedSize属性该属性指示Field对象所定义的大小。 (3)Name属性Name属性指示对象的名称。 (4)NumericScale属性该属性指出Parameter或Field对象中数字值的范围。,(5)OriginalValue属性该属性指示发生任何更改前已在记录中存在的Field的值。 (6)Precision属性该属性指示在Parameter对象中数字值或数字Field对象的精度。 (7)UnderlyingValue属性该属性指示数据库中Field对象的当前值。 (8)Value属性Value属性指示赋给Field、Parameter或Property对象的值。,