第5章 使用数据库.docx

上传人:b****5 文档编号:12027081 上传时间:2023-04-16 格式:DOCX 页数:42 大小:35.48KB
下载 相关 举报
第5章 使用数据库.docx_第1页
第1页 / 共42页
第5章 使用数据库.docx_第2页
第2页 / 共42页
第5章 使用数据库.docx_第3页
第3页 / 共42页
第5章 使用数据库.docx_第4页
第4页 / 共42页
第5章 使用数据库.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

第5章 使用数据库.docx

《第5章 使用数据库.docx》由会员分享,可在线阅读,更多相关《第5章 使用数据库.docx(42页珍藏版)》请在冰豆网上搜索。

第5章 使用数据库.docx

第5章使用数据库

下载

第5章使用数据库

本章要点:

•ADO简介

•如何应用ADO使用数据库

5.1ADO简介

在当今提出的多种动态网页(DHTML)解决方案中都强调了与数据库的连接,其实网页接挂

后台数据库也是当前的热门应用,在电子商务等领域有着广泛的应用,就是说,如果你不能掌

握在ASP中使用数据库,那么你就不能编写出功能强大的ASP应用程序。

ASP用DatabaseAccess

组件与数据库进行连接,DatabaseAccess组件通过ActiveXDataObjects(ADO)访问存储在数

据库或其他表格化数据结构中的信息。

现在,Microsoft对应用程序访问各种各样的数据源所使用的方法是OLEDB,OLEDB介于

ODBC层和应用程序之间。

在你的ASP页面中,ADO介于ODEDB之上的“应用程序”。

你的

ADO调用首先被送到OLEDB,接着被送到ODBC层。

OLEDB是一套组件对象模型(COM)接口,

但它是相当复杂的。

这样,你需要一个连接应用程序与OLEDB的桥梁,这就是ADO。

而且,它

支持开放式数据库连接(ODBC)标准的关系型数据库。

其主要优点是易于使用、高速度、低内

存支出和占用磁盘空间较少。

ADO支持用于建立基于客户端/服务器和Web的应用程序的主要

功能。

ADO提供执行以下操作的方式:

5.1.1连接到数据源

连接可以使应用程序访问数据源,这是交换数据所必须的环境。

同时,可确定对数据源的

所有更改是否已成功或没有发生。

使用Connection对象实现这一操作。

Connection对象代表与数据源进行的唯一会话。

如果是客户端/服务器数据库系统,该对象

可以等价于到服务器的实际网络连接。

使用Connection对象的集合、方法和属性可执行下列操作:

•在打开连接前使用ConnectionString、ConnectionTimeout和Mode属性对连接进行配置。

•设置CursorLocation属性以便调用支持批更新的“客户端游标提供者”。

•使用DefaultDatabase属性设置连接的默认数据库。

•使用IsolationLevel属性为在连接上打开的事务设置隔离级别。

•使用Provider属性指定OLEDB提供者。

•使用Open方法建立到数据源的物理连接。

使用Close方法将其断开。

•使用Execute方法执行对连接的命令,并使用CommandTimeout属性对执行进行配置。

•可使用BeginTrans、CommitTrans和RollbackTrans方法以及Attributes属性管理打开的连

接上的事务(如果提供者支持的话则可包括嵌套的事务)。

•使用Errors集合检查数据源返回的错误。

•通过Version属性读取使用中的ADO执行版本。

•使用OpenSchema方法获取数据库模式信息。

5.1.2操作数据源

连接到数据库后,使用Command对象查询数据库并返回Recordset对象中的记录,以便执

行大量操作或处理数据库结构。

使用Command对象的集合、方法和属性进行下列操作:

•使用CommandText属性定义命令(例如,SQL语句)的可执行文本。

•通过Parameter对象和Parameters集合定义参数化查询或存储过程参数。

•可使用Execute方法执行命令并在适当的时候返回Recordset对象。

•执行前应使用CommandType属性指定命令类型以优化性能。

•使用Prepared属性决定提供者是否在执行前保存准备好(或编译好)的命令版本。

•使用CommandTimeout属性设置提供者等待命令执行的秒数。

•通过设置ActiveConnection属性使打开的连接与Command对象关联。

•设置Name属性将Command标识为与Connection对象关联的方法。

•将Command对象传送给Recordset的Source属性以便获取数据。

5.1.3得到数据

通过Command对象对数据源的操作,返回的记录全集用Recordset对象表示。

Recordset对

象所指的当前记录均为集合内的单个记录。

使用ADO时,通过Recordset对象可对几乎所有数

据进行操作。

所有Recordset对象均使用记录(行)和字段(列)进行构造。

打开Recordset时,

当前记录位于第一个记录(如果有),并且BOF和EOF属性被设置为False。

如果没有记录,

BOF和EOF属性设置是True。

可以使用MoveFirst、MoveLast、MoveNext和MovePrevious方法

以及Move方法和AbsolutePosition、AbsolutePage和Filter属性来重新确定当前记录的位置。

当使

用Move方法访问每个记录(或枚举Recordset)时,可使用BOF和EOF属性查看是否移动已经超

过了Recordset的开始或结尾。

Recordset对象可支持两类更新:

立即更新和批更新。

使用立即更新,一旦调用Update方法,

对数据的所有更改将被立即写入基本数据源。

也可以使用AddNew和Update方法将值的数组作

为参数传递,同时更新记录的若干字段。

如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用

UpdateBatch方法在单个调用中将它们传送给数据库。

这种情况应用于使用AddNew、Update

和Delete方法所做的更改。

调用UpdateBatch方法后,可以使用Status属性检查任何数据冲

突并加以解决。

90使用ASP与SQLServer网站架设

下载

5.1.4使用数据

Recordset对象含有由Field对象组成的Fields集合。

每个Field对象代表了Recordset对象

中的一列。

使用Field对象的Value属性可设置或返回当前记录的数据。

使用Field对象的集合、方法和属性可进行如下操作:

•使用Name属性可返回字段名。

•使用Value属性可查看或更改字段中的数据。

•使用Type、Precision和NumericScale属性可返回字段的基本特性。

•使用DefinedSize属性可返回已声明的字段大小。

•使用ActualSize属性可返回给定字段中数据的实际大小。

•使用Attributes属性和Properties集合可决定对于给定字段哪些类型的功能受到支持。

•使用AppendChunk和GetChunk方法可处理包含长二进制或长字符数据的字段值。

•如果提供者支持批更新,可使用OriginalValue和UnderlyingValue属性在批更新期间解决

字段值之间的差异。

在打开Field对象的Recordset前,所有元数据属性(Name、Type、DefinedSize、Precision和

NumericScale)都是可用的。

在此时设置这些属性将有助于动态构造其格式。

5.1.5检测错误

ADO对象的操作也会产生一个或多个错误。

每个错误出现时,一个或多个Error对象将被放

到Connection对象的Errors集合中。

当另一个ADO操作产生错误时,Errors集合将被清空,

并在其中放入新的Error对象集。

可以及时地访问这个错误的集合,以便需要的时候进行更正。

Error对象的属性可获得每个错误的详细信息,包括以下内容:

Description属性,包含错误的文本。

Number属性,包含错误常量的长整型整数值。

Source属性,标识产生错误的对象。

在向数据源发出请求之后,如果Errors集合中有多个

Error对象,则将会用到该属性。

SQLState和NativeError属性,提供来自SQL数据源的信息。

某些属性和方法返回的警告以Errors集合中的Error对象的方式出现,但并不中止程序的执

行。

在调用Recordset对象的Resync、UpdateBatch或CancelBatch方法,或Connection对象的

Open方法,或者在设置Recordset对象的Filter属性之前,可通过调用Errors集合的Clear方法。

这样就可以读取Errors集合的Count属性,并得到所返回的错误信息。

ADO通过Connection对象、Command对象、RecordSet对象来实现上面的操作。

ADO的对象

模型如下所示:

Connection(对象):

─Errors(集合)─Error(对象)

Command(对象):

─Parameters(集合)─Parameter(对象)

RecordSet(对象):

─Fields(集合)─Field(对象)

其中Connection对象、Command对象、RecordSet对象和Field对象又分别具有Properties集合

第5章使用数据库使用

91下载

而产生Property对象。

下面是以上三大对象的相互关系:

Command.ActiveConnection->Connection

RecordSet.ActiveConnection->Connection

Connection.Excute->RecordSet

Command.Excute->RecordSet

RecordSet.Source->Command

下面分别介绍这三个对象。

5.2Connection对象

ASP使用ADO对各种数据源进行各种操作,其中,Connection对象是必不可少的,我们用

Connection对象与各种数据源进行连接。

5.2.1属性

1.CursorLocation属性

它的取值有两个,一个是adUseClient,一个是adUseServer(默认),前者是使用客户端的游

标,而后者是使用服务器端的游标。

二着的差别在于adUseClient游标可以提供供应商所没有提

供的额外的属性,因而灵活性更大。

需要注意的是Connection对象与RecordSet对象均有此属性,

由Connection对象产生的RecordSet对象会自动继承这个属性。

另外,要让此属性对Connection和

RecordSet对象的实例起作用的话,必须在打开它们之前先作定义。

下面看一个例子:

Setconn=Server.CreateObject("ADODB.Connection")

conn.CursorLocation=adUseClient

strConn="driver={SQLServer};server=srv;"&_

"uid=sa;pwd=;database=pubs"

conn.openstrConn

setrs=Server.CreateObject("ADODB.RecordSet")

rs.open"",conn,,,

采用此种方式则conn与rs的游标均为adUseClient了。

2.Attributes属性

它是Connection对象的特征,可读写。

在Connection对象中,这个属性可以设置两个值:

adXactCommitRetaining在调用CommitTrans方法后,自动启动新事务

adXactAbortRetaining在调用RollbackTrans方法后,自动启动新事务

3.CommandTimeout属性

Connection对象命令执行所等待的时间,默认30秒,超过这个时间,将取消操作,可读写。

4.ConnectionString属性

在使用Connection对象的Open方法打开数据源时,连接参数的字符串,可读写。

字符串中

包含以下内容:

ProviderOLEDB提供者的名字

DataSource指定数据源的名字

92使用ASP与SQLServer网站架设

下载

UserID指定连接数据源时的用户ID

Password指定连接数据源时用户的密码

FileName指定要连接的数据库名字

5.ConnectionTimeout属性

创建连接时所等待的时间,默认15秒,可读写。

6.DefaultDatabase属性

当前连接的数据库的缺省名称,可读写。

7.Mode属性

这个属性指定了打开OLEDB数据处理源时读、写和共享权限。

它可以是下列值之一:

adModeUnkown未指定权限。

adModeRead数据源被只读打开。

adModeWrite数据源被只写打开。

adModeReadWrite数据源被只读写打开。

adModeShareDenyRead数据源以共享模式打开;而且不允许其他用户对数据源行读打

开。

adModeShareDenyWrite数据源以共享模式打开;而且不允许其他用户对数据源行写打

开。

adModeShareExclusive数据源以共享模式打开;而且不允许其他用户对数据源行读写

打开。

adModeShareDenyNone数据源以排它模式打开,即不允许共享。

8.Version属性

返回ADO的版本号。

5.2.2方法

1.BeginTrans,CommitTrans,andRollbackTrans方法

BeginTrans方法用于开始一个新事务;CommitTrans方法,在使用这个方法之前,所有事务

都在缓冲区,用以提高程序的工作效率,调用这个方法后,数据保存到数据库中;

RollbackTrans方法用于取消当前的事务,就是说取消缓冲区中的数据,不把数据修改保存到数

据库中。

2.Open,Close方法

Open方法用来打开一个对象与数据源的连接,而Close方法用来关闭一个对象与数据源的连

接。

Open语法为:

dbcon.OpenConnectionstring,Username,Password

dbcon为我们创建Connection对象;Connectionstring是连接字符串;Username为用户名;

Password为密码。

其中Connectionstring为我们所建立的数据源名,如果我们没有提供这些参数,则ADO就用

第5章使用数据库使用

93下载

下面的参数建立这些参数:

ProviderOLEDB提供者的名字

DataSource指定数据源的名字

UserID指定连接数据源时的用户ID

Password指定连接数据源时用户的密码

FileName指定要连接的数据库名字

Close语法为:

dbcon.Close

Close方法关闭后,dbcon对象并不消失,只是释放资源。

3.Execute方法

这个方法来执行一个查询命令,如:

dbcon.ExecuteSQLstrSQLstr是我们建立的查询字符串。

下面语句演示Execute方法的使用:

<%@LANGUAGE="VBScript"%>

--#Includefile="ADOVBS.INC"-->

<%

SetOBJConnection=Server.CreateObject("ADODB.Connection")

OBJConnection.Open"Works"

注释:

建立Connection对象,用Open方法建立与数据源"WORKS"的连接,Works是已经建

立好的DSN文件。

SQLQuery="SELECT*FROMTSGL"

SetRSCustomerList=OBJConnection.Execute(SQLQuery)

注释:

用Execute方法执行上一行的SQL语句,得到记录集RSCustomerRList.

%>

<%DoWhileNotRSCustomerList.EOF%>

<%=RSCustomerList("TSGL_MC")%>

<%=RSCustomerList("TSGL_CBS")%>

<%

RSCustomerList.MoveNext

注释:

用循环的方法显示记录集RSCustomer中字程TSGL_MC和字段TSGL_CBS的所有内容。

Loop

RSCustomerList.Close

SetRSProductList=Nothing

SetOBJConnection=Nothing

%>

94使用ASP与SQLServer网站架设

下载

注释:

释放对象。

5.3Error对象

前面讲到了Connection对象是用于与各类的数据库进行挂接的,但在此过程中将会出现一些

不可预测的错误,因而有了Error这个对象。

首先要清楚一个概念,Error对象是在连接数据库时

产生的,而并非那些运行时的实时错误。

也就是我们常用OnErrorResumeNext来忽略的错误。

这些错误将在Error对象中用一个统一的模板来集中处理,后面会给出一个实例。

下面先来看

Error对象的属性和方法:

•Count属性:

用来统计Errors集合的数目,它的特点与前面讲到的Property对象的Count对象

相同。

•Clear方法:

写法为Error.Clear,是用来清除Errors集合中的原有对象的,在统计新的Error

对象时应该先使用此语句。

•Item方法:

用来指定特定的一个错误,语法为Error.Item(number),其中number为一数字。

由于Item为默认的方法,所以Error(number)的写法与前面的写法是等价的。

下面是一段程

序,用来列举Error的所有对象。

<%

这个程序用来测试ADO的Error对象

DIMi

Setconn=Server.CreateObject("ADODB.Connection")

conn.ConnectionString="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="_

&Server.Mappath("/source_asp")&"/property/employee.mdb;"

conn.open

IFconn.errors.count>0THEN

Response.Write"connectiontodatebasecauseproblem!

"&"
"

FORi=0toconn.errors.count-1

Response.Writeconn.errors.item(i)&"
"

NEXT

ELSE

Response.Write"connectionto

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1