【asp源码栏目提醒】:网学会员--在 asp源码编辑为广大网友搜集整理了:ASP与SQL_Server网站架设(PDF)-05 - 网页设计绩等信息,祝愿广大网友取得需要的信息,参考学习。
下载 第5章 使用数据库 本章要点: ADO 简介 如何应用ADO使用数据库5.1 ADO 简介 在当今提出的多种动态网页 DH T M L解决方案中都强调了与数据库的连接,其实网页接挂后台数据库也是当前的热门应用,在电子商务等领域有着广泛的应用,就是说,如果你不能掌握在
ASP中使用数据库,那么你就不能编写出功能强大的
ASP应用程序。
ASP用Database Access组件与数据库进行连接, Database Access 组件通过 ActiveX Data Objects ADO 访问存储在数据库或其他表格化数据结构中的信息。
现在, M i c r o s o f t对应用程序访问各种各样的数据源所使用的方法是 O L E D B,OLEDB 介于O D B C层和应用程序之间。
在你的
ASP 页面中, A D O介于 O D E D B之上的“应用程序”。
你的A D O调用首先被送到 O L E D B,接着被送到 O D B C层。
O L E D B是一套组件对象模型 C O M 接口,但它是相当复杂的。
这样,你需要一个连接应用程序与 OLE DB的桥梁,这就是 ADO。
而且,它支持开放式数据库连接 ODBC 标准的关系型数据库。
其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。
ADO 支持用于建立基于客户端 /服务器和 Web 的应用程序的主要功能。
ADO 提供执行以下操作的方式:5.1.1 连接到数据源 连接可以使应用程序访问数据源,这是交换数据所必须的环境。
同时,可确定对数据源的所有更改是否已成功或没有发生。
使用 Connection对象实现这一操作。
C o n n e c t i o n对象代表与数据源进行的唯一会话。
如果是客户端 /服务器数据库系统,该对象可以等价于到服务器的实际网络连接。
使用Connection 对象的集合、方法和属性可执行下列操作: 在打开连接前使用 ConnectionString、ConnectionTimeout 和 Mode 属性对连接进行配置。
设置 CursorLocation 属性以便调用支持批更新的“客户端游标提供者”。
使用 DefaultDatabase 属性设置连接的默认数据库。
使用 IsolationLevel 属性为在连接上打开的事务设置隔离级别。
使用 Provider 属性指定 OLE DB 提供者。
使用 Open 方法建立到数据源的物理连接。
使用 Close 方法将其断开。
90 使用
ASP与SQL Server 网站架设 下载 使用 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 得到数据 通过C o m m a n d对象对数据源的操作,返回的记录全集用 Recordset 对象表示。
Recordset 对象所指的当前记录均为集合内的单个记录。
使用 ADO 时,通过 Recordset 对象可对几乎所有数据进行操作。
所有 R e c o r d s e t对象均使用记录(行)和字段(列)进行构造。
打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 F a l s e。
如果没有记录,BOF和EOF属性设置是 True。
可以使用MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及Move方法和 AbsolutePosition、AbsolutePage和Filter属性来重新确定当前记录的位置。
当使用M o v e方法访问每个记录(或枚举 R e c o r d s e t)时,可使用 B O F和E O F属性查看是否移动已经超过了Recordset的开始或结尾。
Recordset对象可支持两类更新:立即更新和批更新。
使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。
也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。
如果 提供 者 支 持 批 更 新 , 可 以 使提 供 者 将 多 个 记 录的 更 改 存 入 缓 存 , 然 后 使用UpdateBatch 方法在单个调用中将它们传送给数据库。
这种情况应用于使用 A d d N e w、U p d a t e和 Delete 方法所做的更改。
调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。
下载 第5章 使用数据库 使用 915.1.4 使用数据 Recordset 对象含有由 Field 对象组成的 Fields 集合。
每个 Field 对象代表了 Recordset 对象中的一列。
使用 Field 对象的 Value 属性可设置或返回当前记录的数据。
使用Field对象的集合、方法和属性可进行如下操作: 使用Name属性可返回字段名。
使用Value属性可查看或更改字段中的数据。
使用Type、Precision和NumericScale属性可返回字段的基本特性。
使用 DefinedSize 属性可返回已声明的字段大小。
使用 ActualSize 属性可返回给定字段中数据的实际大小。
使用 Attributes 属性和 Properties 集合可决定对于给定字段哪些类型的功能受到支持。
使用 AppendChunk 和 GetChunk 方法可处理包含长二进制或长字符数据的字段值。
如果提供者支持批更新,可使用 OriginalValue 和 UnderlyingValue 属性在批更新期间解决 字段值之间的差异。
在打开 F i e l d对象的 R e c o r d s e t前,所有元数据属性( N a m e、Ty p e、D e f i n e d S i z e、 Precision 和NumericScale)都是可用的。
在此时设置这些属性将有助于动态构造其格式。
5.1.5 检测错误 ADO对象的操作也会产生一个或多个错误。
每个错误出现时,一个或多个 Error 对象将被放到 Connection 对象的 Errors 集合中。
当另一个 ADO 操作产生错误时, Errors 集合将被清空,并在其中放入新的 Error 对象集。
可以及时地访问这个错误的集合,以便需要的时候进行更正。
Error对象的属性可获得每个错误的详细信息,包括以下内容: Description属性,包含错误的文本。
Number属性,包含错误常量的长整型整数值。
S o u r c e属性,标识产生错误的对象。
在向数据源发出请求之后,如果 Errors 集合中有多个Error 对象,则将会用到该属性。
SQLState和NativeError属性,提供来自 SQL数据源的信息。
某些属性和方法返回的警告以 Errors 集合中的 Error 对象的方式出现,但并不中止程序的执行。
在调用 Recordset 对象的 R e s y n c、U p d a t e B a t c h或C a n c e l B a t c h方法,或 C o n n e c t i o n对象的Open 方法,或者在设置 Recordset 对象的 Filter 属性之前,可通过调用 Errors 集合的 Clear 方法。
这样就可以读取 Errors集合的Count属性,并得到所返回的错误信息。
A D O通过C o n n e c t i o n对象、C o m m a n d对象、R e c o r d S e t对象来实现上面的操作。
A D O的对象模型如下所示: Connection对象:—Errors集合—Error对象 Command对象:—Parameters集合—Parameter对象 RecordSet对象:—Fields集合—Field对象 其中C o n n e c t i o n对象、C o m m a n d对象、R e c o r d S e t对象和F i e l d对象又分别具有 P r o p e r t i e s集合 92 使用
ASP与SQL Server 网站架设 下载而产生Property对象。
下面是以上三大对象的相互关系: Command.ActiveConnection-gtConnection RecordSet.ActiveConnection-gtConnection Connection.Excute-gtRecordSet Command.Excute-gtRecordSet RecordSet.Source-gtCommand 下面分别介绍这三个对象。
5.2 Connection 对象 A S P使用A D O对各种数据源进行各种操作,其中, C o n n e c t i o n对象是必不可少的,我们用Connection对象与各种数据源进行连接。
5.2.1 属性 1. CursorLocation属性 它的取值有两个,一个是 a d U s e C l i e n t 一个是 a d U s e S e r v e r(默认),前者是使用客户端的游标,而后者是使用服务器端的游标。
二着的差别在于 a d U s e C l i e n t游标可以提供供应商所没有提供的额外的属性,因而灵活性更大。
需要注意的是 C o n n e c t i o n对象与R e c o r d S e t对象均有此属性,由Connection对象产生的 RecordSet对象会自动继承这个属性。
另外,要让此属性对 Connection和RecordSet对象的实例起作用的话,必须在打开它们之前先作定义。
下面看一个例子: Set connServer.CreateObjectquotADODB.Connectionquot conn.CursorLocationadUseClient strConn quotdriverSQL Serverserversrvquotamp_ quotuidsapwddatabasepubsquot conn.open strConn set rs Server.CreateObjectquotADODB.RecordSetquot rs.open quotquotconn 采用此种方式则 conn与rs的游标均为 adUseClient了。
2. Attributes属性 它是Connection对象的特征,可读写。
在 Connection对象中,这个属性可以设置两个值: adXactCommitRetaining 在调用CommitTrans方法后,自动启动新事务 adXactAbortRetaining 在调用RollbackTrans方法后,自动启动新事务 3. CommandTimeout属性 Connection对象命令执行所等待的时间,默认 30秒,超过这个时间,将取消操作,可读写。
4. ConnectionString属性 在使用 C o n n e c t i o n对象的 O p e n方法打开数据源时,连接参数的字符串,可读写。
字符串中包含以下内容: Provider OLEDB提供者的名字 Data Source 指定数据源的名字 下载 第5章 使用数据库 使用 93 User ID 指定连接数据源时的用户 ID Password 指定连接数据源时用户的密码 File Name 指定要连接的数据库名字 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 and RollbackTrans方法 B e g i n Tr a n s方法用于开始一个新事务; C o m m i t Tr a n s方法,在使用这个方法之前,所有事务都在缓冲区,用以提高程序的工作效率,调用这个方法后,数据保存到数据库中;R o l l b a c k Tr a n s方法用于取消当前的事务,就是说取消缓冲区中的数据,不把数据修改保存到数据库中。
2. Open,Close方法 O p e n方法用来打开一个对象与数据源的连接,而 Cl o s e方法用来关闭一个对象与数据源的连接。
Open语法为: dbcon.Open ConnectionstringUsernamePassword d b c o n为我们创建 C o n n e c t i o n对象; C o n n e c t i o n s t r i n g是连接字符串; U s e r n a m e为用户名;Password为密码。
其中C o n n e c t i o n s t r i n g为我们所建立的数据源名,如果我们没有提供这些参数,则 A D O就用 94 使用
ASP与SQL Server 网站架设 下载下面的参数建立这些参数: Provider OLEDB提供者的名字 Data Source 指定数据源的名字 User ID 指定连接数据源时的用户 ID Password 指定连接数据源时用户的密码 File Name 指定要连接的数据库名字 Close语法为: dbcon.Close Close方法关闭后,dbcon对象并不消失,只是释放资源。
3. Execute方法 这个方法来执行一个查询命令,如: dbcon.Execute SQLstr SQLstr是我们建立的查询字符串。
下面语句演示Execute方法的使用: lt LANGUAGE quotVBScriptquot gt lt-- Include filequotADOVBS.INCquot --gt ltHTMLgtltHEADgt ltBODYgt lt Set OBJConnection Server.CreateObjectquotADODB.Connectionquot OBJConnection.Open quotWorksquot 注释:建立 C o n n e c t i o n对象,用 O p e n方法建立与数据源 quot W O R K S quot的连接, Wo r k s是已经建立好的DSN文件。
SQLQuery quotSELECT FROM TSGLquot Set RSCustomerList OBJConnection.ExecuteSQLQuery 注释:用Execute方法执行上一行的 SQL语句,得到记录集 RSCustomerRList. gt lt Do While Not RSCustomerList.EOF gt ltTRgt ltTD BGCOLORquotf7efdequot ALIGNCENTERgt ltFONT SIZE1gt lt RSCustomerListquotTSGL_MCquotgt lt/FONTgtlt/TDgt ltTD BGCOLORquotf7efdequot ALIGNCENTERgt ltFONT SIZE1gt lt RSCustomerListquotTSGL_CBSquot gt lt/FONTgtlt/TDgt lt RSCustomerList.MoveNext 注释:用循环的方法显示记录集 RSCustomer中字程TSGL_MC和字段TSGL_CBS的所有内容。
Loop RSCustomerList.Close Set RSProductList Nothing Set OBJConnection Nothing gt 下载 第5章 使用数据库 使用 95 注释:释放对象。
lt/BODYgt lt/HTMLgt5.3 Error对象 前面讲到了Connection对象是用于与各类的数据库进行挂接的,但在此过程中将会出现一些不可预测的错误,因而有了 E r r o r这个对象。
首先要清楚一个概念, E r r o r对象是在连接数据库时产生的,而并非那些运行时的实时错误。
也就是我们常用 On Error Resume Next来忽略的错误。
这些错误将在 E r r o r对象中用一个统一的模板来集中处理,后面会给出一个实例。
下面先来看Error对象的属性和方法: Count属性:用来统计 Errors集合的数目,它的特点与前面讲到的 Property对象的Count对象 相同。
C l e a r方法:写法为 E r r o r. C l e a r,是用来清除 E r r o r s集合中的原有对象的,在统计新的 E r r o r 对象时应该先使用此语句。
I t e m方法:用来指定特定的一个错误,语法为 E r r o r. I t e m n u m b e r ,其中 n u m b e r为一数字。
由于I t e m为默认的方法,所以 E r r o r n u m b e r 的写法与前面的写法是等价的。
下面是一段程 序,用来列举Error的所有对象。
lt 这个程序用来测试 ADO的Error对象 DI M i Set connServer.CreateObjectquotADODB.Connectionquot conn.ConnectionStringquotDriverMicrosoft Access Driver .mdbDBQquot _ ampServer.Mappathquot/source_aspquotampquot/property/employee.mdbquot conn.open TH IF c o n n . e r r o r s . c o u n t gt 0 EN Response.W r i t e quot c o n n e c t i o n t o d a t e b a s e c a u s e p r o b l e m quot amp quot lt b r gt quot FOR i 0 to conn.errors.count-1 Response.W r i t e c o n n . e r r o r s . i t e m i amp quot lt b r gt quot NEXT ELSE Response.W r i t e quot c o n n e c t i o n t o d a t e b a s e s u c c e s s f u l l y quot END IF conn.close gt5.4 Recordset对象5.4.1 方法 1. Open,close方法 Open方法的用法:rs.Open sqlstrconCursorlockOptions 96 使用
ASP与SQL Server 网站架设 下载 其中: r s是我们生成的 R e c o r d s e t对象; s q l s t r是查询字符串; c o n是连接字符串,也可以是C o n n e c t i o n对象;c u r s o r是游标类型 后面属性里会讲到 ;l o c k是加锁类型 后面属性里会讲到 ;options是参数类型,可取俩个值 :adCmdtext是SQL查询字符串,adCmdStoredProc 是存储过程。
Close方法用法为:rs.close 关闭Recordset对象。
2. AddNew方法 这个方法在数据库中添加一个空记录: rs.addnew 要想向空记录中加入数据,用以下方法: r s 字段1值1 r s 字段2值2 ...... rs.update r s为建立好的 Records e t对象。
3. Delete方法 rs.delete删除当前记录 4. Move方法 这个方法可以在记录集内漫游,用法为: rs.move nmbStartrow。
其中:rs是Recordset对象,nmb是指你要移动多少行, Startrow是开始的行标签。
5. Movefirst、Movelast、Movenext、Moveprevious方法 Movefirst 把当前记录指针移动到表的开始。
Movelast 把当前记录指针移动到表的末尾。
Movenext 把当前记录指针向后移动一条记录。
Moveprevious 把当前记录指针向前移动一条记录。
6. Supports方法 这个方法是判断Recordset对象是否支持某个功能,用法为: Set boolstrrs.Supportsoptions。
。
r 其中:boolstr是返回的判断值,如支持某个功能则为“ true”否则为“false” s是Recordset对象,options取值如下: Adaddnew 检查是否支持Addnew方法。
AdBookmark 检查是否支持书签。
Addelete 检查是否支持delete方法。
AdMovePrevious 检查记录集中指针是否可以向后移动。
AdResync 检查记录集是否可以被最新数据源更新。
AdUpdate 检查是否支持Update方法。
AdUpdateBatch 检查是否支持UpdateBatch方法。
7. Update、CancelUpdate方法 这俩个方法一个是更新数据,一个是取消更新。
前者是对所做的修改保存,而后者是从缓冲区中除掉数据,取消更新。
8. UpdateBatch、CancelBatch方法 这俩个方法一个是成批更新数据,一个是取消成批更新。
前者是对所做的所有修改做保存, 下载 第5章 使用数据库 使用 97而后者是从缓冲区中除掉所有数据,取消更新。
9. Requery方法 对最初执行的查询再执行一遍。
5.4.2 属性 1. Bookmark 属性 我们在记录中有时需要快速定位某个访问过的记录,那么这个属性就是用来标志某个记录.