ASP访问数据库组件_第1页
ASP访问数据库组件_第2页
ASP访问数据库组件_第3页
ASP访问数据库组件_第4页
ASP访问数据库组件_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

第九章ASP存取数据【本章内容】9.1ADO概述9.2Connection对象9.3Command对象9.4Recordset对象19.1

ADO对象概述ASP应用程序不能直接访问数据库,必须通过ADO(ActiveXDataObject),才可以访问Oracle、Sybase、SQLServer、Access等各种支持ODBC或者OLEDB的数据库。ASP与ADO、OLEDB及各种数据库之间的关系如图8-7所示。ASP应用程序ADOOLEDBODBCSQLServerAccess其他数据库图8-72对数据库的操作有三大步骤与数据库建立连接对已建立连接的数据库执行命令操作获得执行SQL语句的返回结果并对其进行操作。ADO中与这三个步骤相对应的有三个主要对象,分别是Connection对象、Command对象和Recordset对象。39.1

ADO概述1、ADO主要对象及其功能对象功能说明Connection建立与数据库的连接,对任何数据库的操作都要有此对象Command对数据库执行的命令,如查询、添加、修改和删除等命令Recordset用来得到从数据库返回的记录集49.1

ADO概述2、ADO的这三个对象分别有一个对象的集合,以便在三个操作步骤中出现特殊情况或有特殊操作要求时进行处理。Connection对象Command对象Recordset对象Fields集合Parameters集合Errors集合5Connection对象Connection对象是ASP应用程序与数据库建立连接的对象。在某些情况下,可以不显式创建一个Connection对象,ADO将会隐含地创建一个Connection对象以连接到数据库。除了与数据库建立连接外,Connection对象还可以对数据库执行命令操作(例如,SQL命令或一个存储过程),并且可以从数据库中返回数据。6Command对象Command对象是对数据库执行命令操作的对象。Connection对象也能对数据库执行命令操作。实际上,当从Connection对象中运行一条命令时,已经隐含地创建了一个Command对象。Connection对象在处理命令的功能上受到一定的限制,而Command对象则是专门用来处理命令的对象。有时,其他对象会向命令语句传入参数。Connection对象中不能进行这样的处理,而Command对象则可以指定参数。除此之外,Command对象还可得到由命令提供的一些附加信息。7Recordset对象Recordset对象是保存从数据库中提取的一系列记录的对象,被称为记录集对象。由于它含有从数据库中提取的记录,因而是ADO中使用最为普遍的对象。尽管会运行不返回数据的命令,比如增加或更新数据的命令,但在多数情况下会运行返回数据的命令,会获得一系列记录。可以更改(增加、更新和删除)Recordset对象中的记录、过滤记录并只显示部分内容等。还可以使用Recordset对象对数据库中的数据进行更改(增加、更新和删除)。89.2Connection对象使用Connection对象建立与数据库连接的方式主要有以下两种:使用ODBC数据源的方式使用连接字符串的方式9使用ODBC数据源连接在“控制面板”的“管理工具”中选择“数据源(ODBC)”。1011<%optionexplicitdimconn,strsql,myrecordsetsetconn=server.createobject("adodb.connection")conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")strsql="select*fromempinfo"setmyrecordset=conn.execute(strsql)%><tableborder="1"align="center"><tr><td>职工工号</td>…</tr><%dowhilenotmyrecordset.eof %> <tr><td><%=myrecordset("empid")%></td> …</tr> <%

myrecordset.movenextLoopmyrecordset.closeconn.closesetmyrecordset=nothingsetconn=nothing%>129_1.asp13使用连接字符串连接连接字符串的一般写法是: “driver={MicrosoftAccessDriver(*.mdb)};dbq=c:\myweb\ch09\companydb.mdb"为了方便ASP应用程序的移植,不采取直接使用数据库文件物理路径的做法,而是使用Server对象的Mappath方法将数据库文件的相对路径转换为物理路径,即连接字符串改写为: "driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")还可以采取下面的这种写法: "Provider=Microsoft.Jet.OLEDB.4.0;dataSource="&server.mappath("companydb.mdb")14使用包含文件使用包含文件本质上是一种使用连接字符串建立连接或使用ODBC数据源方式连接数据库的方法。在一个ASP应用程序中会包含许多对数据库进行操作的ASP页面,每一个这样的ASP页面都需要有连接字符串提供连接信息。一旦ASP应用程序的数据连接发生改变,则每个ASP页面中的连接字符串都需要修改,使得维护工作量大且易出错。使用包含连接字符串的包含文件来存储许多ASP页面需要的连接字符串。实现很简单,只需要创建一个新的ASP文件,文件名没有限定,为了便于识别,不妨称为Connection.asp,在其中加入连接字符串的代码。15Connection.asp====================================<%dimstrconnstrconn="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")%>169_2.asp===========================================<%optionexplicit%><!--#includefile="connection.asp"-->…<%dimconnsetconn=Server.CreateObject("ADODB.Connection")conn.open

strconndimstrsql,myrecordsetstrsql="select*fromempinfo"setmyrecordset=conn.execute(strsql)%><tableborder="1"align="center">…<%dowhilenotmyrecordset.eof %> <tr><td><%=myrecordset("empid")%></td> …</tr> <%

myrecordset.movenextloopmyrecordset.closeconn.closesetmyrecordset=nothingsetconn=nothing%>…179.2Connection对象Connection对象的常用属性属性功能说明CommandTimeout设置Connection对象的Execute方法的最长执行时间,默认值为30秒ConnectionString指定Connection对象的数据库连接信息ConnectionTimeOutOpen方法与数据库连接的最长时间,默认值为15秒DefaultDatebase在提供了多个数据库时,用该属性指定默认的数据库Mode设置连接数据库的读写权限provider设置连接的数据库管理程序State获取当前链接对象的状态,0表示关闭,1表示打开Attributes用于控制事务处理的行为Version显示ADO的版本信息18Connection对象常用属性介绍CommandTimeout属性:用于设定使用Connection对象的Execute方法执行一条SQL命令的最长时限。如果执行SQL命令超时,将中断操作并返回错误信息。该属性的默认值为30秒,设定为0表示没有时间限制。ConnectionTimeout属性:用于设定使用Connection对象的Open方法建立数据连接的最长时限。默认值为15秒。如果将该属性设置为0,ADO将无限等待直到数据连接打开。ConnectionString属性:用于设定使用Connection对象建立数据连接所需的信息,即设置连接字符串。19Connection对象常用属性介绍<%DimconnDimstrconnstrconn="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")Setconn=server.createobject(“ADODB.connection”)Conn.open

strconn%>====================================<%DimconnSetconn=server.createobject(“ADODB.connection”)Conn.ConnectionString="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")Conn.open%>20Connection对象常用属性介绍Mode属性:用于设定建立数据库连接后,对该数据库的操作权限。DefaultDatabase属性:当一个数据提供者提供多个数据库时,设定默认数据库。也可用于获得当前连接的数据库的默认名称。符号常量整数值权限adModeUnkown0未指定权限adModeRead1只可对数据库进行读操作adModeWrite2只可对数据库进行写操作adModeReadWrite3可对数据库进行读操作和写操作219.2Connection对象

4、Connection对象的常用方法方法功能说明Open建立与数据库的连接Close关闭与数据库的连接,与Open方法的作用相反Execute执行数据库查询或操作命令BeginTrans开始一个新的事务CommitTrans提交事务RollbackTrans回滚事务229.2Connection对象使用Connection对象之前要先建立Connection对象,在ADO中建立对象使用Server.CreateObject方法。语法为: SetConnection对象名=Server.CreateObject("ADODB.Connection")建立对象后才可以利用Connection对象的Open方法打开数据库并与之建立连接,语法如下:Connection对象名.OpenConnectionString,UserID,Password

其中ConnectionString为一个字符串:“参数1=值1;参数2=值2;……”239.2Connection对象1、Connection对象Open方法的参数参数功能说明DsnODBC数据源名称User数据库登录帐号Password数据库登录密码Driver数据库的类型(驱动程序)Dbq数据库的绝对路径Provider数据提供者24数据库种类ODBC驱动程序名称MSAccessDatabaseMicrosoftAccessDriver(*.mdb)DBASEFilesMicrosoftdBaseDriver(*.dbf)VisualFoxProDatabaseMicrosoftVisualFoxProDriver文本文件MicrosoftTextDriver(*.txt)MicrosoftSQLServerSQLServerOracleDatabaseServerMicrosoftODBCForOracleMicrosoftFoxProMicrosoftFoxProDriver(*.dbf)表11-1常用的ODBC驱动程序设置字符串25Close方法 关闭数据源的连接,释放连接占用的资源。Execute方法 用来执行一个SQL语句命令或一个存储过程。在使用时分为如下两种情况。有返回记录时的语法格式:Setrs=conn.Execute

commandtext,recordsaffected,options无返回记录时的语法格式:Conn.Execute

commandtext,recordsAffected,options26Commandtext是执行的命令文本。可以是数据库中的表名、存储过程和SQL语句命令。recordsAffected为可选参数,返回受此次命令执行影响的记录条数。Options为可选参数,是命令选项。Option值意义描述1表示被执行的字符串包含一个命令文本2表示被执行的字符串包含一个表名4表示被执行的字符串包含一个存储过程名8没有指定字符串的内容(这是默认值)27<%optionexplicit%>…<%dimconnsetconn=server.createobject("adodb.connection")conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")dimmyrecordset,recordscountsetmyrecordset=conn.execute("find",4)%><tableborder="1"align="center"><tr><td>职工工号</td>…</tr><%dowhilenotmyrecordset.eof %> <tr><td><%=myrecordset("empid")%></td> …</tr> <%

myrecordset.movenextloopmyrecordset.closeconn.closesetmyrecordset=nothingsetconn=nothing%>…2829Errors集合与Error对象在ASP应用程序中,与ADO对象相关的操作都有可能产生一个或多个错误,一个错误就是一个Error对象。随着错误的产生,一个或多个Error对象被放在Connection对象的Errors集合中。当另一个ADO对象操作产生错误时,Errors集合被清空,新的Error对象集被放在Errors集合中。30Errors集合的属性和方法Count属性:唯一的一个属性,返回Errors集合中Error对象的数目。

connection对象.Errors.countClear方法:用来清除Errors集合中的原有Error对象,通常在统计新Error对象之前先使用此方法。

connection对象.Errors.clearItem方法:用来对指定的一个错误建立Error对象。

setError对象=connection对象.Errors.Item(错误索引)31Error对象的属性Error对象的属性用以获取关于错误的详细信息,如什么样的错误,可能的原因等。Description属性:关于错误的描述,是一个默认属性。Number属性:对错误的编号,是一个Long型的整数常量值。Source属性:记录产生错误的对象和原因。NativeError属性:记录来自数据库服务器的错误信息。HelpContext属性:返回帮助系统的标题ID。HelpFile属性:返回帮助系统中帮助文件的完整路径。329_4.asp33<%optionexplicit%><html><head><title>Errors集合与Error对象</title></head><body><h2align="center">错误对象的信息</h2><%onerrorresumenext'发生错误后继续执行dimconnsetconn=server.createobject("adodb.connection")conn.open"dsn=employeeee"'一个错误的数据源dimi,errfori=0toconn.errors.count-1 seterr=conn.errors.item(i)

response.write"错误编号:"&err.number&"<br>"

response.write"错误原因:"&err.source&"<br>"

response.write"错误描述:"&err.description&"<br>"next%></body></html>34事务处理一个事务作为一个整体由一系列操作组成。事务的成功要求事务中的每个操作都必须成功。如果事务中有一个操作失败,则整个事务失败。当事务失败时,系统返回到事务开始前的状态。这个取消所有变化的过程称为回滚。ADO中的Connection对象提供了BeginTrans方法、CommitTrans方法和RollbackTrans方法实现事务处理。BeginTrans方法用于开始一个新的事务,即在内存中为事务开辟一片内存缓冲区。事务中的每个操作对数据的修改都暂存于内存缓冲区。35CommitTrans方法提交事务。在使用这个方法之前,须确认事务中的每个操作对数据的修改都已成功完成。使用CommitTrans方法将事务中所有变动的数据从内存缓冲区一次性地保存到数据库中,结束当前事务。RollbackTrans方法用于取消当前的事务,也就是取消缓冲区中的数据,当事务中的某个操作失败时,则取消缓冲区中的所有数据,不把数据修改保存到数据库中。数据库中的数据仍然处于事务开始前的状态。369_5.asp37<%optionexplicit%>…<%onerrorresumenext'发生错误后继续执行dimconn,strconn,strsqlstrconn="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")setconn=server.createobject("adodb.connection")conn.open

strconnconn.begintransstrsql="updatebank_accountsetbalance=balance-10000.00wherename='孙亮'"conn.execute(strsql)ifconn.errors.count=0then

mittrans

response.write"转账操作已成功完成!"else

conn.rollbacktrans

response.write"有错误发生,转账操作取消!"endifconn.closesetconn=nothing%>…389.3Command对象Command对象是介于Connection对象和Recordset对象之间的一个对象,它主要通过传递SQL指令,对数据库提出操作请求,把得到的结果返回给Recordset对象。Command对象建立在Connection对象之上,也就是说Command对象必须有一个已经建立的Connection对象才能发出SQL指令。用Command对象的参数与非参数查询方法可以大大的提高速度。399_6.asp40…<%dimconnsetconn=server.createobject("adodb.connection")conn.open"employee"dimcmd,myrecordsetsetcmd=server.createobject("mand")cmd.activeconnection=connmandtext="select*fromempinfo"setmyrecordset=cmd.execute%><tableborder="1"align="center"><tr><td>职工工号</td>…</tr><%dowhilenotmyrecordset.eof%><tr><td><%=myrecordset("empid")%></td>…</tr><%myrecordset.movenextloopmyrecordset.closeconn.closesetmyrecordset=nothingsetconn=nothing%>…41首先创建connection对象并建立数据连接。创建command对象实例后,设置其activeconnection属性确定其相关的数据连接,设置其commandtext属性确定执行操作命令的文本。最后调用其Execute方法对连接的数据库执行操作命令。DimcmdSetcmd=server.createobject(“ADODB.Command”)cmd.ActiveConnection=“employee”42ActiveConnection属性:用于指定command对象的相关数据连接。可以连接connection对象,数据源名,连接字符串。CommandType属性:指定commandtext属性中命令的类型以优化性能。该属性取值如下表。属性说明Activeconnection该属性指定command对象的数据连接Commandtype该属性指定命令类型Commandtext该属性定义命令文本Commandtimeout该属性指定命令的时间限制。默认值为30秒prepared该属性指示命令执行前是否对命令作预处理43CommandText属性:用于定义命令文本。如SQL语句,表名,存储过程调用。默认值为“”(零长度字符串)符号常量整数值说明adCmdTest1表示是一个SQL语句adCmdTable2表示是一个表adCmdStoredProc4表示是一个存储过程或查询名adCmdUnknow8表示不能识别,它是默认值44CommandTimeout属性:指定执行命令的时间限制,即指示执行命令期间在终止尝试和产生错误之前需等待的时间。该属性常用于因网络拥挤或服务器负载过重产生迟延而取消execute方法调用,默认值为30秒。如果将该属性设置为零,ADO将一直等待到命令执行完毕。Prepared属性:指示命令执行前是否对命令作预处理。如果将该属性设为true,则会把操作命令的编译结果保存下来。这可能会降低操作命令第一次执行的速度,但一旦操作命令的编译结果保存下来后,便可将命令的编译版本用于所有后续的执行中,从而提高操作命令执行的速度,提高系统的性能。459_7.asp46…<%dimcmd,myrecordsetsetcmd=Server.CreateObject("ADODB.Command")cmd.Activeconnection="employee"mandtype=4mandtext="find"setmyrecordset=cmd.execute%><tableborder="1"align="center"><tr><td>职工工号</td>…</tr><%dowhilenotmyrecordset.eof%><tr><td><%=myrecordset("empid")%></td>…</tr><%myrecordset.movenextloopmyrecordset.closesetmyrecordset=nothing%>…47Command对象的常用方法Execute方法根据是否有返回记录集,Execute方法常用的语法格式分为两种:Setrecordset对象=command对象.executeCommand对象.execute48Execute方法有返回记录集Setrecordset对象=command对象.executerecordsaffected,parameters,options无返回记录集Command对象.executerecordsaffected,parameters,options其中,recordsaffected返回对数据库进行操作所影响的记录数目。Parameters为向SQL语句命令传送的参数。Options指示commandtext中命令文本的类型。功能与commandtype属性相同,取值也一样。499_8.asp50<%optionexplicit%><html><head><title>Command对象示例</title></head><body><%dimcmd,recordcountsetcmd=server.createobject("mand")cmd.activeconnection="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb")mandtype=1mandtext="deletefromempinfowheresalary>5000"cmd.executerecordcount,,1response.write"已删除"&recordcount&"条记录。"%></table></body></html>51Parameter对象Parameter对象用于保存需要传递的参数的相关信息,如参数的名称和参数的值等。Parameter对象将这些信息保存在自己的属性中。Parameter对象常用属性属性说明Name参数名称Type参数的数据类型Value参数值Direction参数传递的方向Size参数占用存储空间的大小attributes指定该参数的性质52符号常量整数值数据类型adDate7表示日期值adInteger3表示4字节的带符号整数adDecimal14具有固定精度和范围的精确数字值adSingle4单精度浮点值adDouble5双精度浮点值adVarChar200表示字符串值53符号常量整数值说明adParamInput1为输入参数,即传送数据给一个存储过程(默认值)adParamOutput2为输出参数,即接收从command对象执行后的输入值adParamInputOutput3输入和输出参数,即传送并接收数据adParamReturnValue4返回值,用来读取从存储过程返回的状态值符号常量整数值说明adParamSigned16允许为有符号的值(默认值)adParamNullable64允许为NULL值adParamLong128允许为长数据54Parameter对象的常用方法有一个AppendChunk。该方法用于向已有参数附加二进制或字符数据。为了使用该方法,该parameter对象attributes属性需设置为adParamLong。创建parameter对象的方法就是command对象的CreateParameter方法,CreateParameter方法的功能是用指定的名称、类型、方向、大小和值创建新的parameter对象。语法格式如下:

setparameter对象=command对象.createparameter(name,type,direction,size,value)55Parameters集合只有一个属性:count,该属性存储parameters集合中parameter对象的个数。Append方法:是parameter集合中较为常用的方法。其作用是将一个parameter对象加入到parameters集合中。Item方法:从parameters集合中取得指定的parameter对象。Delete方法:从parameters集合中删除指定的parameter对象Refresh方法:刷新parameters集合中的parameter对象。569_9.html<html><head><title>parameters集合和parameter对象示例</title></head><body><formname="form1"method="post"action="9_9.asp">请输入要查找的职工的工号:<inputtype="text"name="empid"><inputtype="submit"value="确定"></form></body></html>57<%ifrequest.form("empid")<>""then dimpara_name,para_type,para_direction,para_size,para_value

para_name="para_empid"

para_type=200

para_direction=1

para_size=10

para_value=request.form("empid") dimcmd,param,myrecordset setcmd=server.createobject("mand")

cmd.activeconnection="driver={MicrosoftAccessDriver(*.mdb)};dbq="&server.mappath("companydb.mdb") setparam=cmd.createparameter(para_name,para_type,para_direction,para_size,para_value)

cmd.parameters.append

param

mandtype=4

mandtext="para_find" setmyrecordset=cmd.execute ifmyrecordset.eofthen

response.write"没有满足条件的记录" else

response.write"检索到下列记录!"

response.write"<hr>" dowhilenotmyrecordset.eof

response.write"职工工号:"&myrecordset("empid")&"<br>" …

response.write"<hr>"

myrecordset.movenext loop endifelse

response.write"输入数据为空,请重新输入!"endif%><p><ahref="9_9.html">重新查询</a>589.4Recordset对象【本节内容】9.4.1Recordset对象中记录集的结构9.4.2Recordset对象实例的创建9.4.3分页显示记录集9.4.4使用Recordset对象更新数据库9.4.5Fields集合和Field对象59记录RecordCount…记录4记录3记录2记录1记录指针当前记录MovePrevious方法移动方向MoveNext方法移动方向BofEof9.4.1Recordset对象中记录集的结构60Recordset对象的属性1、Recordset对象常用属性概述Recordset对象的常用属性根据功能大致可以分成三组:第一组主要包括Source、ActiveConnection、CursorType、LockType、CursorLocation、Maxrecords

和Filter,用来限定记录集的内容和性质,它们通常需要在打开记录集(使用Open方法)前设置。

第二组主要包括RecordCount、Bof和Eof,它们是关于记录的,一般只能在打开记录集后再读取,而不能设置。第三组主要包括PageSize、PageCount、AbsolutePage和AbsolutePostion,用来完成数据分页显示的功能,它们通常在打开记录集后再设置。表十列出了Recordset对象的常用属性。61属性说明SourceCommand对象名或SQL语句或数据表名ActiveConnectionConnection对象名或包含数据库连接信息的字符串CursorTypeRecordset对象记录集中的指针类型,取值见表七LockTypeRecordset对象锁定类型,取值见表八Maxrecords控制从服务器取得的记录集的最大记录数目CursorLocation控制数据处理的位置,客户端还是服务器端Filter控制欲显示的内容RecordCount记录集总数Bof记录集的开头Eof记录集的结尾PageSize数据分页显示时每一页的记录数PageCount数据分页显示时数据页的总数AbsolutePage当前指针所在的数据页AbsolutePossition当前指针所在的记录行62Recordset对象的属性2、Recordset对象常用属性的使用(1)Source该属性用于设置数据库查询信息,可以是Command对象名、SQL语句或表名等。语法为:

Recordset对象.Source=数据库查询信息例如:<%dimrssetrs=Server.CreateObject("ADODB.Recordset")rs.Source="Select*fromUsers"response.Write

rs.Source%>63Recordset对象的属性(2)ActiveConnection该属性用于设置数据库连接信息,可以是Connection对象名或包含数据库连接信息的字符串。语法为:

Recordset对象.ActiveConnection=数据库连接信息rs.ActiveConnection="Driver={MicrosoftAccessDriver(*.mdb)};Dbq="&Server.MapPath("data\BBS#.mdb")(3)CursorType该属性用于设置记录集指针类型,取值见表七,语法为:

Recordset对象.CursorType=取值(0|1|2|3)如不设置,默认值是0,指针只能向前移动,要想指针可以自由前后移动,一般设为1或2。

64记录集的指针类型CursorType参数取值取值含义AdOpenForwardOnly0向前指针,只能利用MoveNext或GetRows向前检索数据,默认值AdOpenKeyset1键盘指针,在记录集中可以向前或向后移动,当某客户做了修改之后(除出了增加新数据),其它用户都可以立即显示AdOpenDynamic2动态指针,记录集中可以向前或向后移动;所有修改都会立即在其它客户端显示AdOpenStatic3静态指针,在记录集中可以向前或向后移动,所有更新的数据都不会显示在其他客户端65Recordset对象的属性(4)LockType该属性用于设置记录集的锁定类型,取值见表八,语法为:

Recordset对象.LockType=取值(1|2|3|4)如不设置,默认值是1,表示只能读取。利用Recordset对象也可以执行添加、删除、更新等操作,不过这时就要设置该属性,如一般时设置为2。下面通过改写例1来说明以上四属性的使用。LockType参数取值取值含义AdLockReadOnly1只读,不允许修改记录集,默认值AdLockPessimistic2只能同时被一个客户修改,修改时锁定,修改完解除锁定AdLockOptimistic3可以同时被多个客户修改AdLockBatchOptimistic4数据可以修改,但不锁定其它用户66Recordset对象的属性(5)CursorLocation该属性用于设置记录集在客户端还是在服务器处理。取值及说明如表十一所示,语法为:

Recordset对象.CursorLocation=整数值(1|2|3)CursorLocation参数取值取值含义AdUseClient1在客户端处理AdUseServer2在服务器端处理AdUseClientBatch3动态处理,在客户端处理,不过处理时要切断连接,处理完毕再重新连接更新67Recordset对象的属性(6)Filter该属性用于设置欲显示的内容。取值及说明如表十二,语法为:

Recordset对象.Filter=取值(0|1|2|3)表十二Filter参数取值说明AdFilterNone0显示所有数据AdFilterpendRecords1只显示没有修改过的数据AdFilterAffectedRecords2只显示最近修改过的数据AdFilterFetchedRecords3只显示暂存于客户端缓存中的数据68Recordset对象的属性(7)RecordCount

该属性用于返回记录集中的记录总数,语法为:

Recordset对象.RecordCount例8-7统计Users表中记录总数69Recordset对象的属性(8)Bof该属性用于判断当前记录指针是否在记录集的开头(第一条记录之前),在开头返回True,否则返回False。(9)Eof该属性用于判断当前记录指针是否在记录集的结尾(最后一条记录之后),在结尾则返回True,否则返回False。如果记录集为空,可以认为记录集指针指在开头,也在结尾。Bof和Eof属性的值都为True,常用此属性来判断记录集是否为空。70Recordset对象的属性例如:<%…..rs.Open……ifrs.Eofandrs.BofThen

response.write"没有找到相关的记录"……endif%>71Recordset对象的属性(10)PageSize该属性用于设置数据分页时第一页的记录数。语法为:

Recordset对象.PageSize=整数(11)PageCount该属性用于设置数据分页显示时数据页的总数。语法为:

Recordset对象.PageCount72Recordset对象的属性(12)AbsolutePage该属性用于设置当前指针位于哪一页。语法为:

Recordset对象.AbsolutePage=整数该整数当然应该小于数据页的总数(13)AbsolutePostion该属性用于设置当前指针所在的记录行的绝对值。语法为:

Recordset对象.AbsolutePostion=整数73Recordset对象的方法1、Recordset对象常用方法的概述Recordset对象有许多方法,这些方法提供了一些和记录集相关的操作,按功能可将常用和方法分为两组:第一组包括Open、Close和Requery,用于Recordset对象的打开与关闭。第二组包括MoveFirst、MovePrevious、MoveNext、MoveLast和Move,用来移动记录指针。表十三列出了RecordSet对象的常用方法74Recordset对象的方法

方法说明Open打开记录集Close关闭当前的Recordset对象Requery重新打开记录集MoveFirst指针移动到第一条记录MovePrevious指针移动到上一条记录MoveNext指针移动到下一条记录MoveLast指针移动到最后一条记录Move指针移动到指定记录GetRows从Recordset对象读取一行或多行记录到一个数组中75Recordset对象的方法2、Recordset对象常用方法的使用(1)Open前面已经介绍并多次使用过该方法,请参照8.5.1的内容。(2)Close该方法用于关闭Recordset对象。语法为:

Recordset对象.Close和Connection对象的关闭方法一样。(3)Requery该方法用于重新打开记录集,以更新内容,相当于关闭再打开。语法为:

Recordset对象.Requery

(4)MoveFirst该方法用于将记录指针移动到第一条记录。语法为:

Recordset对象.MoveFirst76Recordset对象的方法(5)MovePrevious该方法用于将记录指针移动到上一条记录。语法为:

Recordset对象.MovePrevious(6)MoveNext该方法用于将记录指针移动到下一条记录。语法为:

Recordset对象.MoveNext(7)MoveLast该方法用于将记录指针移动到最后一条记录。语法为:

Recordset对象.MoveLast

77Recordset对象的方法(8)Move该方法用于将指针移动到指定的记录。语法为:

Recordset对象.Movenumber,start参数意义说明:start:设置指针移动的开始位置,缺省值为当前指针的位置。number:从start设置的起始位置向前或向后移动number条记录,如为正整数,表示向下移动;如为负整数,表示向上移动。(9)GetRows

Myarray=Recordset对象.GetRows(rows,start,fields)

Myarray为目标数组名;Rows为返回数组的行数;start为读取数据的起点;fields为Recordset的字段789.4.2Recordset对象实例的创建建立Recordset对象的标准语法是:SetRecordset对象=Server.CreateObject(“ADODB.Recordset”)建立了Recordset对象之后再使用Open方法打开一个数据库,语法是:Setrs=Server.CreateObject(“ADODB.Recordset”)rs.Open[Source],[ActiveConnection],[CursorType],[LockType],[Options]79<%dimconn,cmd,myrecordsetsetconn=server.createobject("adodb.connection")conn.open"employee"setcmd=server.createobject("mand")cmd.activeconnection=connmandtext="select*fromempinfo"setmyrecordset=server.createobject("adodb.recordset")myrecordset.open

cmdifmyrecordset.eofthen

response.write"没有记录!"else

response.write"<hr>" dowhilenotmyrecordset.eof

response.write"职工工号:"&myrecordset("empid")&"<br>"

response.write"职工姓名:"&myrecordset("name")&"<br>"

response.write"职工性别:"&myrecordset("sex")&"<br>"

response.write"职工年龄:"&myrecordset("age")&"<br>"

response.write"所在部门:"&myrecordset("dept")&"<br>"

response.write"<hr>"

myrecordset.movenext loopendif%>80819.4.2Recordset对象实例的创建1、

Recordset

对象Open方法的参数rs.Open[Source],[ActiveConnection],[CursorType],[LockType],[Options]参数意义说明SourceCommand对象名或SQL语句或数据表名ActiveConnectionConnection对象名或包含数据库连接信息的字符串CursorTypeRecordset对象记录集中的指针类型,取值见表七,可以省略LockTypeRecordset对象的使用类型取值见表八,可以省略OptionsSource类型,取值见表九,可以省略829.4.2Recordset对象实例的创建记录集的指针类型:CursorType参数取值取值含义AdOpenForwardOnly0向前指针,只能利用MoveNext或GetRows向前检索数据,默认值AdOpenKeyset1键盘指针,在记录集中可以向前或向后移动,当某客户做了修改之后(除出了增加新数据),其它用户都可以立即显示AdOpenDynamic2动态指针,记录集中可以向前或向后移动;所有修改都会立即在其它客户端显示AdOpenStatic3静态指针,在记录集中可以向前或向后移动,所有更新的数据都不会显示在其他客户端839.4.2Recordset对象实例的创建记录集的锁定类型:LockType参数取值取值含义AdLockReadOnly1只读,不允许修改记录集,默认值AdLockPessimistic2只能同时被一个客户修改,修改时锁定,修改完解除锁定AdLockOptimistic3可以同时被多个客户修改AdLockBatchOptimistic4数据可以修改,但不锁定其它用户849.4.2Recordset对象实例的创建Source参数的类型:Options参数取值取值含义AdCmdUnknown8CommandText参数类型无法确定,是系统的缺省值AdCmdText1CommandText参数是SQL命令类型AdCmdTable2CommandText参数是一个表名称AdCmdStoreProc4CommandText参数是一个存储过程名称859.4.2Recordset对象实例的创建总的说来,Source是数据库查询信息;ActiveConnection是数据库连接信息;CursorType是指针类型;LockType是锁定信息;Options是数据库查询信息类型。在大部分情况下可以省略后3个参数使用。若在省略中间的某个参数,必须用逗号给出中间参数的位置,也就是说,每一个参数必须对应相应的位置。86<%dimconn,cmd,myrecordsetsetconn=server.createobject("adodb.connection")conn.open"employee"setcmd=server.createobject("mand")cmd.activeconnection=connmandtext="select*fromempinfo"setmyrecordset=server.createobject("adodb.recordset")myrecordset.open

cmdifmyrecordset.eofthenresponse.write"没有记录!"elseresponse.write"<hr>"dowhilenotmyrecordset.eofresponse.write"职工工号:"&myrecordset("empid")&"<br>"response.write"职工姓名:"&myrecordset("name")&"<br>"response.write"职工性别:"&myrecordset("sex")&"<br>"response.write"职工年龄:"&myrecordset("age")&"<br>"response.write"所在部门:"&myrecordset("dept")&"<br>"response.write"<hr>"myrecordset.movenextloopendif%>879.4.1建立Recordset对象与数据库表的操作3、利用Insert语句添加记录

使用SQL语句的Insert语句可以添加记录。一般说来,添加记录不需要返回记录集,可以不使用Recordset

对象,直接使用Connection对象的Execute方法来执行相关的SQL语句就可以了。在SQL语句的双引号里面还有双引号时,要把里面的双引号转化为单引号才生效。889.4.1建立Recordset对象与数据库表的操作例8-3在Users表中加入一条新记录:要了解Execute方法在本次操作中影响的记录条数,可以使用number参数,语法为:Connection对象.ExecuteSQL语句串,number899.4.1建立Recordset对象与数据库表的操作4、利用Delete语句删除记录

和添加记录一样,删除记录也不需要返回记录集,直接使用Connection对象的Execute方法来执行相关的SQL语句就可以了。例8-4:909.4.1建立Recordset对象与数据库表的操作5、利用Update语句修改记录例8-5,修改用户的密码919.4.4使用分页属性分页显示记录集

当要显示的数据较多时,往往把数据分成多页来显示出来,用户可以一页一页地浏览。要进行分页,就要用到前面学习的Recordset对象的第三组属性:PageSize、PageCount和AbsolutePage。下面用例8-8来进行说明

929.4.4使用分页属性分页显示记录集例8-8<!--#includefile="conn.asp"--><html><head><title>分页显示Users中的数据</title></head><body><%'a记录集rsdimrssetrs=Server.CreateObject("ADODB.Recordset")rs.Open"Select*fromUsers",conn,1'如果第一次打开,不带URL参数pageNo,则显示第一页DimpageNo,pageSifRequest.querystring("pageNo")=""Then

pageNo=1else

pageNo=cInt(request.querystring("pageNo"))endif939.4.4使用分页属性分页显示记录集'b'开始分页显示,指向要显示的页,然后逐条显示当前的所有记录rs.PageSize=2'设置每页显示两条记录pageS=rs.PageSize'PageS变量用来控制显示当前页记录rs.AbsolutePage=pageNo'设置当前显示第几页%><!c表头内容><tableborder="1"><caption>表Users的内容</caption><trheight="30"bgcolor="#808080"><td>ID</td><td>Name</td><td>Email</td><td>Topic</td><td>Reply</td><td>Power</td></tr>949.4.4使用分页属性分页显示记录集'd表中的内容,用循环实现<%Dowhilenotrs.EofandpageS>0%><tr><td><%=rs("Id")%></td><td><%=rs("Name")%></td><td><%=rs("Email")%></td><td><%=rs("Topic")%></td><td><%=rs("Reply")%></td><td><%=rs("Power")%></td></tr><%rs.moveNext

pageS=pageS-1Loop%>959.4.4使用分页属性分页显示记录集<!e显示页数的一行存在链接的文字><tr><tdcolspan="6"align="right"><%

response.write

rs.RecordCount&"条 "'共多少条记录

response.write

rs.PageCount&"页 "'共分多少页

response.write

pageNo&"/"&rs.PageCount&"页 "'当前页的位置

dimi'i作为循环变量

fori=1tors.PageCount

ifi=pageNothen

response.write

i&" "'分页,如果是当前页,则不存在链接

else

response.write"<ahref='8-8.asp?pageNo="&i&"'>"&i&"</a> " endifnext%></td></tr>969.4.4使用分页属性分页显示记录集</table></body></html><%rs.closesetrs=nothingconn.closesetconn=nothing%>程序说明:①程序是按指定页显示该页记录。②a部分建立Recordset对象rs,如果URL没有参数,则显示第一页。③b部分利用循环依次显示pageNo值指向页的每一条记录。④每页的循环条件中要判断两种结尾,一种是本页的结尾pageS>0,另一个是还要判断是否是整个记录的结尾rs.Eof。979.4.5使用Field对象和Fields集合

Field对象又称字段对象,是Recordset的子对象。在一个记录集中,每一个字段就是一个Field对象,而所有的Field对象组合起来就是Fields集合。rs(“Email”)rs.Fields(“Email”)rs.Fields(“Email”).Valuers.Fields.Item(“Email”).Value98rs.(3)rs.Fields(3)rs.Fields(3).Valuers.Fields.Item(3).Value字段的索引值可以通过Select语句来改变此索引值。如:SelectEmail,Id,Name,PowerfromUsers1、Fields集合的属性和方法Fields集合的属性只有一个,就是Count属性。该属性返回记录集中字段(Field对象)的个数。语法为:

Recordset对象.Fields.Count999.4.5使用Field对象和Fields集合

Fields集合的方法Fields集合有Item和refresh两个方法。Item方法用于建立某一个Field对象。语法为:SetField对象=Recordset对象.Fields.Item(字段名或字段索引值)其中字段索引值是根据记录集中的先后顺序从0到Fields.Count-1Item和Fields都是可以省略的。Refresh方法用于刷新记录,可以重新取得Fields数据集合中所包含的Field对象。下面通过例8-9来说明Field对象的的建立方法。1009.4.5使用Field对象和Fields集合

1019.4.5使用Field对象和Fields集合

2、Field对象的属性和方法属性说明Name表示字段的名称Value表示字段的值Type字段的数据类型DefinedSize表示字段的长度Precision表示字段存放数字的最大位数NumericScale表示字段存放数字的最大值ActualSize表示字段的数据长度Attributes表示字段的数据属性OriginalValue表示数据字段是从第一次启动或是在调用update方法前的值UnderlyingValue表示数据库中Field对象的当前值1029.4.5使用Field对象和Fields集合

1031049.4.5使用Field对象和Fields集合Field对象的方法包括AppendChunk,GetChunk等。AppendChunk方法和Ge

温馨提示

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

评论

0/150

提交评论