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