第5章 使用数据库.docx
- 文档编号:12027081
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:42
- 大小:35.48KB
第5章 使用数据库.docx
《第5章 使用数据库.docx》由会员分享,可在线阅读,更多相关《第5章 使用数据库.docx(42页珍藏版)》请在冰豆网上搜索。
第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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 使用数据库 使用 数据库
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1