ASP动态网页设计-第8章-利用ADO实现数据库的_第1页
ASP动态网页设计-第8章-利用ADO实现数据库的_第2页
ASP动态网页设计-第8章-利用ADO实现数据库的_第3页
ASP动态网页设计-第8章-利用ADO实现数据库的_第4页
ASP动态网页设计-第8章-利用ADO实现数据库的_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章利用ADO实现数据库的存取本章要点Connection对象Recordset对象Command对象Field对象Parameter对象Property对象Error对象

ASP作为动态Web应用程序,其开发Web数据库是其最重要的环节。ADO(ActiveX

Data

ObjectsActiveX数据对象)是微软提供的新一代数据库存取访问技术,ASP内置的ADO组件是数据库开发的重

要工具。

应用ADO组件,通过ODBC驱动程序或OLE

DB链接字符串可实现ASP与数据库之间的连接,通过ADO组件提供的各种方法实现数据检索和数据编辑等操作。

本章将重点介绍ADO对象的结构和配置,以及各种数据访问对象。本章将详细介绍ActiveX数据对象及其在ASP编程中的应用。8.1

ADO简介

ADO对象的主要优点是高速、容易使用、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。

ADO对象是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理,以开发高效率、高可靠性的数据库应用程序。

ADO结合了OLE

DB易于使用的特性以及

RDO(Remote

Data

Objects远程数据对象)和

DAO(Data

Access

Ojects数据访问对象)模型中的最好特性,并将它们重新组织在一个对象模型中。

ADO包含所有可以被OLE

DB标准对象描述的数据

类型,即ADO对象模型具有扩展性,即使对于那些从来没有见到过的记录集的信息格式,只要使用正常的ADO编程对象,就能够可视化地处理所有的工作,ADO对象模型给开发人员提供了一种快捷、简单、高效的数据库访问方法,可以在脚本中使用

ADO对象建立对数据库的连接,并从数据库中读取记录,形成需要的对象集合。使用ADO对象建立对数据库的连接有两种方法:使用面向ODBC驱动器的OLE

DB驱动程序建立连接,这种连接与任何有ODBC驱动器的数据库兼容。使用原始的OLE

DB驱动程序建立连接。

ADO组件由ADODB对象库构成,ADODB对象库包含7个对象和4个数据集合。它们分别是:Connection对象、Recordset对象、Command对象、

Field对象、Parameter对象、Property对象和Error对象,以及Fields集合、Parameter集合、

Properties集合和Error集合。

ADO把绝大部分的数据库操作封装在7个对象中,在ASP页面中编程调用这些对象执行相应的数据库操作。8.2

Connection对象

Connection对象用来建立数据源和ASP程序之间的连接。它代表ASP程序与数据源的唯一对话,建

立到数据源的连接后,可以在此基础上用

RecordSet对象或Command对象对数据库进行查询、更新、插入、删除等操作。8.2.1

打开和关闭数据库连接

要实现打开和关闭数据库连接,首先要应用

Connection对象创建数据连接,因为Connection对象不是ASP内置对象,要使用Connection对象,必须首先显式地创建它。<%Dim

connSet

conn

=

Server.CreateObject

("ADODB.Connection")%>

创建了Connection对象之后,需要打开连接才能连接到数据库。若使用ODBC进行数据源连接,则对应的语法为:<%cn.Open

"DSN=建立的系统DSN名称"%>Connection对象也可直接连接到Access数据库<%Dim

connSetConn=Server.CreateObject("ADODB.Connection")Conn.open"provider=microsoft.jet.oledb.4.0;data

source

="&server.mappath("database.mdb")%>应用完Connection对象之后,用户最好关闭并释放Connection对象,来缓解数据库服务器的压力。其语法如下:<%Conn.closeSet

conn

=

nothing%>8.2.2

Connection对象的属性属

性含

义Attributes包含Connection对象的事务状况。ConnectionString包含用来和数据源建立连接的字符串。ConnectionTimeOut包含连接到数据库的等待最长时间。如果超过此时间,则认为连接失败。DefaultDatabase当前连接数据源所使用的默认数据库。Mode数据的更新许可权,设置或返回provider的访问权限。Provider包含Connection对象的数据提供者名称。State包含Connection对象的当前状态,返回一个描述连接是打开还是关闭的值。

1.Attributes属性:可设置或返回Long值,可读写,该值可指示对象的一项或多项特性。并且其值可以是一个或多个XactAttributeEnum值的和。常量值描述adXactAbortRetaining262144当调用RollbackTrans,自动启动一个新事务。adXactCommitRetaining131072当调用CommitTrans,自动启动新事务。2.ConnectionTimeOut属性:可设置或返回在终止尝试和产生错误之前打开连接需要等待的秒数。默认是15秒。3.ConnectionString属性:可设置或返回用于建立到数据源的连接的信息。4.DefaultDatabase属性:可设置或返回一个字符串值,该值是特定Connection对象上的默认数据库的名称。5.Mode属性:可设置或返回一个

ConnectModeEnum

值,此属性为可读写,该值指示在Connection,Record或Stream对象中修改数据的权限。6.Provider属性:可设置或返回包含特定

Connection对象的提供者名称的字符串值。默认是MSDASQL(Microsoft

OLE

DBprovider

for

ODBC)。7.State属性:可返回一个值,为只读。该值描述对象的当前状态是打开、关闭、正在连接、正在执行还是正在检索数据。8.2.3

Connection对象的方法方法描述Open打开一个数据库的链接。Execute该方法可以执行SQL语句,并且返回一个RecordSet对象。Close关闭一个已经打开的链接。BeginTrans开始一个新事务。CommitTrans保存任何更改并结束当前事务。RollbackTrans取消当前事务中所作的任何更改并结束事务。

1.Open方法:用于创建与数据源的连接,只有调用了

Connection对象的Open方法后,Connection对象才会真正存在,然后才能发命令对数据源产生作用。语法为:connection.Open

connectionstring,userID,password

connectionstring:可选。一个包含有关连接的信息的字符串值。该字符串由一系列被分号隔开的parameter=value语句组成的。

userID:可选。一个字符串值,包含建立连接时要使用的用户名称。

Password:可选。一个字符串值,包含建立连接时要使用的密码。

2.Execute方法:此方法可用于执行指定的SQL语句,用于实现对数据库表的修改、插入、删除和查询等操作。其一般格式有以下两种:

1)执行SQL查询语句时,将返回查询得到的记录数。语法为:Set对象变量名=Connection.Execute(“SQL查询语句”)

2)执行操作性语句时,没有记录集的返回。语法为:Connection.ExecuteCommandText,RecordsAffected,Options

3.Close方法:该方法用于关闭连接对象,以释放所占用的系统资源。

4.BeginTrans、CommitTrans、RollbackTrans方法ADO的一个主要功能是控制并执行数据源的事务操作。事务机制的工作原理是,当一个事务开始时,先将所有对数据库的修改缓存在本地,如果全部操作都能成功,则一次性提交到数据库执行,否则只要其中一个步骤操作失败,就会发生回滚事件,撤销所有写操作。采用这种机制,既提高了工作效率,又保证了数据一致性。例如,在进行资金转帐时,必须从源帐户中减去转帐数额,并将同样数额的资金划拨到目标帐户,无论其中哪个更新失败,都将导致帐户收支不平衡。在打开的事务中使用这些方法可确保要么全部进行更新,要么不做任何更新。8.3

Command对象

Command对象代表一个能被数据提供器处理的命令。使

用Command对象检索数据库可返回Recordset对象中的记

录,它还能执行添加记录、删除记录、更新记录、选择记录以及建立数据表、删除数据表、修改数据表等操作。由于Command对象可以带输入、输出参数,因而使用

Command对象不仅能够对一般的数据库信息进行操作,

还能够调用数据库存储过程。

Command对象的Execute方法可以执行SQL语句、调用存

储过程和创建Recordset对象实例。Command对象还具有

Parameter集合,使用该集合可以将数据库存储过程的参数与集合中各项元素相对应,而且存储过程的输出值也作为一个参数被包含在Parameter集合中,从而简化了对存储过程的调用。8.3.1

Command对象的属性属性含义Activeconnection设定Command对象的链接对象Commandtext设置SQL命令或存储过程Commandtype设置Commandtext的命令类型CommandTimeout设置命令执行的超时时间1.Activeconnection属性:可指示Command对象当前所属的Connection对象。如果连接被关闭,它可设置或返回连接的定义。如果连接打开,它会设置或返回当前的Connection对象。2.Commandtext属性:可设置或返回一个字符串,该字符串包含一个provider命令,比如一条SQL语句、一个表名称、一个相对URL、或者一个存储过程调用。默认值为零""(零长度字符串)。

3.Commandtype属性:可设置或返回一个

CommandTypeEnum

值,该值可定义Command对象的类型。4.CommandTimeout属性:可设置或返回执行命令期间在终止尝试和产生错误之前需等待的时间。设置或返回Long值,该值指示等待命令执行的秒数。默认值为30。8.3.2

Command对象的方法

1.CreateParameter方法:可创建和返回一个

Parameter对象,该对象包含指定的属性,比如名称、类型、方向、大小和值。

此方法不会将Parameter对象自动追加到

Command对象的Parameters集合。可使用

Command对象的Parameters集合的Append方法将Parameter对象添加。语法:Set对象变量名=objcommand.CreateParameter(Name,Type,Direction,Size,Value)

2.Execute方法:可执行Command对象的

CommandText属性中指定的查询、SQL语句或存储过程。

如果CommandText属性指定有记录返回的查询,执行产生的任何结果都将存储在新的Recordset对象中。

如果此命令没有记录返回的查询,提供者将返回关闭的Recordset对象。语法:对于没有记录返回的Command:objcommand.Execute

RecordsAffected,parameters,options语法:对于有记录返回的Command:Set

rs=objcommand.Execute(RecordsAffected,parameters,options)

RecordsAffected:可选。返回受查询影响记录的数目。对于有记录返回的查询,请使用

Recordset对象的RecordCount属性来计算该对象中的记录数量。

Parameters:可选。用SQL语句传递的参数值。用于更改、更新或向Parameters集合插入新的参数值。

Options:可选。指示提供者应如何计算

Command对象的CommandText属性。可以是一个或者多个CommandType值。默认是

adCmdUnspecified。8.4

RecordSet对象除了利用Connection与Command对象的Execute方法可获得记录集外,利用ADO的RecordSet对象,也可获得记录集,且该方法所获得的记录集,具有更灵活的控制性和更强的功能。

在打开记录集之前,可以详细设置记录集的游标和锁定类型,以决定可对一个记录集进行怎样的操作。同时该对象提供了一系列的方法和属性,通过编程可以非常方便的处理记录集,下面介绍该对象的应用。创建一个RecordSet对象实例,语法如下:Set记录集对象实例变量=Server.CreateObject(“ADODB.RecordSet”)8.4.1

RecordSet对象的属性

1.ActiveConnection属性:通过设置RecordSet对象的

ActiveConnection属性可以使Recordset对象与特定的

Connection对象相关联,ActiveConnection属性可以是一个Connection对象名称或是是一个包含数据源连接信息的字符串,如果连接被关闭,设置或返回连接的定义,如果连接打开,设置或返回当前的Connection对象。

2.ActiveCommand属性:返回与Recordset对象相关联的Command对象。

3.Source属性:可以是一个Command对象名称、一条

SQL语句或是一个指定的数据表等。4.CursorLocation属性:设置或返回游标服务的位置。

5.CursorType属性:设置或返回一个Recordset对象的游标类型。在ADO中,定义了4种不同的游标(指针)类型。符号常量值含义AdOpenForwardOnly0默认值,仅向前游标,只允许在

Recordset中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。adOpenKeyset1键集游标,允许用户看到其他用户所做的数据更改。但不能看到其他用户添加和删除的记录。adOpenDynamic2动态游标,用户可以看到其他用户所作的添加、更改和删除。adOpenStatic3静态游标,提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。

6.LockType属性:设置或返回当编辑Recordset中的一条记录时,可指定锁定类型的值。符号常量值含义adLockReadOnly0默认值。以只读模式打开,故不能更新、插入或删除记录集中的记录。adLockPessimistic1保守式记录锁定。在编辑修改一个记录时,立即锁定它,以防止其他用户对其进行操作。最安全的锁定机制。adLockOptimistic2开放式记录锁定。在编辑修改记录时,并未加锁,只有在调用记录集的Update方法更新记录时,才锁定记录。adLockBatchOptimistic3开放式批更新,用于立即更新模式相反的批更新模式。

7.RecordCount属性:返回一个Recordset对象中的记录数目。

8.BOF属性:如果当前的记录位置在第一条记录之前,则返回true,否则返回fasle。

9.EOF属性:如果当前记录的位置在最后的记录之后,则返回true,否则返回fasle。利用该属性,可防止指针越界而发生错误。通常用来作为循环访问记录集结束的标志。

10.PageSize属性:设置或返回Recordset对象的一个单一页面上所允许的最大记录数。

11.PageCount属性:返回一个Recordset对象中的数据页数。

12.AbsolutePage属性:设置或返回一个可指定

Recordset对象中页码的值。

13.AbsolutePosition属性:设置或返回一个值,此值可指定Recordset对象中当前记录的顺序位置(序号位置)。该属性一般是介于1和RecordCount属性值之间的整数,但

也可能取具有特殊含义的值,常量值含义AedPostUnknown-1表示当前位置未知,或者提供器不支持AbsolutePage属性。AdPostBOF-2表示当前记录指针位于第一个记录之前。AdPostEOF-3表示当前记录指针位于最后一个记录之前。8.4.2

RecordSet对象的方法

1.Open方法:RecordSet对象中最重要的方法是应用Open方法可打开一个光标,该光标指向查询返回的记录。其语法如下。记录集对象实例变量.OpenSource,ActiveConnection,CursorType,LockType,Options

Source:该参数可以是含有一个SQL字符串、表格、视图名称或者存储过程调用的字符串,也可以是Command对象。

ActiveConnection:该参数可以Connection对象的实例名或字符串。

CursorType:用来确定服务器打开Recordset时应该使用的游标类型。

LockType:用来确定服务器打开Recordset时应该使用的锁定类型。

Options:该参数用于指定Source参数项的命令字符串的类型,其取值与对应的类型与Connection对象中Execute方法中Options参数相同,

2.RecordSet对象其它方法:RecordSet对象提供了如表所示的非常丰富的记录集方法,通过这些方法可实现对记录集的添加、删除、修改等各种操作。方法描述AddNew创建一条新记录。Cancel撤销一次执行。CancelUpdate撤销对Recordset对象的一条记录所做的更改。Close关闭一个Recordset。Delete删除一条记录或一组记录。Find搜索一个Recordset中满足指定某个条件的一条记录。GetRows把多条记录从一个Recordset对象中拷贝到一个二维数组中。GetString将Recordset作为字符串返回。Move在Recordset对象中移动记录指针。MoveFirst把记录指针移动到第一条记录。MoveLast把记录指针移动到最后一条记录。MoveNext把记录指针移动到下一条记录。MovePrevious把记录指针移动到上一条记录。Open打开一个数据库元素,此元素可提供对表的记录、查询的结果或保存的Recordset的访问。Seek搜索Recordset的索引以快速定位与指定的值相匹配的行,并使其成为当前行。Update保存所有对Recordset对象中的一条单一记录所做的更改。UpdateBatch把所有Recordset中的更改存入数据库。请在批更新模式中使用。8.5

Errors数据集合和Error对象

当ADO对象的操作产生错误时,会有一个或多个Error对象被放到Connection对象的Errors集合中;据此,可获得产生错误的原因和来源,以便采取适当的措施,使程序更加完善。Error对象可通过建立的Connection对象的Errors数据集合取得,也可通过RecordSet对象或

Command对象的ActiveConnection属性来取得。8.5.1

Errors数据集合

所有Error对象的集合用来响应一个连接(Connection)上的错误。Errors数据集合包括两个属性:Count和Item。Count属性:用来指示集合中有多少个Error对象,应用语法为:long=Errors集合变量.count。Item属性:用来访问Errors集合中每一个Error对象的索引,可以根据这个值来访问一个特定的Error对象。应用语法为:Set

Err=Errors.item(Index)或Set

Err=Errors(Index)。Errors集合的属性Connection对象.Errors.Count可以获得数据库是否发生了错误,如果没有错误发生,则Count等于0,否则大于0。

Errors集合有2个方法:Clear和Refresh,其含义如下。

1.Clear方法:从Error集合中移去所有的Error对象。应用语法为Errors.Clear。

2.Refresh方法:根据来自数据提供者的变化信息来更新集合中的Error对象。应用语法为

Errors.Refresh。8.5.2

Error对象

Connection对象是用于与各类的数据库进行连接

的,但在此过程中将会出现一些不可预测的错误,因而出现了Error对象。首先要清楚一个概念,

Error对象是在连接数据库时产生的,而并非那些运行时的实时错误。8.6

Fields数据集合和Field对象

每个Field对象对应于RecordSet中的一列,由多个

Field对象可以构成Fields数据集合。使用Field对象的Value属性可设置或取得当前记录的数据。8.6.1

Fields数据集合

所有Field对象的集合都关联着一个记录集(RecordSet)对象。Fields集合包含记录集中每一字段值,相当于访问表格的某一个单元格。访问

Fields集合的方法有多种,比如访问以上数据表student中姓名字段的值,可应用如下方法:rs.Fields.Item(1)rs.Fields.Item(1).valuers.Fields.Item(“姓名”)rs.Fields.Item(“姓名”).valuers.Fields(1)rs.Fields(1).valuers.Fields(“姓名”)rs.Fields(“姓名”).valuers.(1)rs.(1).valuers.(“姓名”)rs.(“姓名”).value8.6.2

Field对象的属性属性含义Name可返回字段名Value可查看或更改字段中的数据Type、Precision、NumericScale可返回字段的基本特性DefinedSize可返回已声明的字段大小ActualSize可返回给定字段中数据的实际大小Attributes可决定对于给定字段哪些类型的功能受到支持8.6.3

Field对象的方法Field对象中主要的方法包括AppendChunk和GetChunk方法,用来专门处理text、image等数据类型。其中AppendChunk方法用于将数据写到数据库中;GetChunk方法用于将数据从数据库中取出。语法如下:Field.AppendChunk

dataVariant

=

field.GetChunk(size)8.7 Properties数据集合和

Property对象

Property对象集合关联着连接、命令、记录集或字段对象中的其中一个。Property对象代表数据提供者的属性。下面介绍Properies数据集合和

Property对象的内容。8.7.1

Properties数据集合

Properties数据集合是包含特定对象实例的所有

Property对象,也称为Properties数据集合对象,包括Count属性、Refresh方法和Item方法等。

1.Count属性:用来取得Properties集合中包含的

Property对象个数。

2.Refresh方法:用来重新取得Properties数据集合中所有的Property对象。

3.Item方法:用来取得Properties集合中的某个

Property对象。属性含义Name8.7.2表示P对r象o属p性e的r名ty称对象Value表示对象的属性值Type表示对象属性的数据类型Attributes表示对象的特性8.8

Parameters数据集合和

Parameter对象

在前面的章节中介绍Command对象时,已介绍过

Parameter对象可为Command对象传递参数,而

Command对象的所有Parameter对象构成了

Parameter集合。也可以说Parameter对象集合关联着一个命令(Command)对象。

Parameter对象代表SQL

Server存储过程的参数或查询中的参数。

下面介绍Parameters数据集合与Parameter对象的内容。8.8.1

Parameters数据集合

在Command对象中,有多个Parameter子对象可以用来存

储参数,这些Parameter对象都收集在Parameters集合中。该集合中包括以下属性与方法:

1.Count属性:存储了组成Parameters集合的Parameter对象的数目。

2.Append方法:用于将Parameter对象追加到

Parameters集合中。

3.Delete方法:用于删除Parameters集合中的Parameter对象。4.Refresh方法:用于更新Parameters

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论