网易学院—第三章 asp数据库编程.doc_第1页
网易学院—第三章 asp数据库编程.doc_第2页
网易学院—第三章 asp数据库编程.doc_第3页
网易学院—第三章 asp数据库编程.doc_第4页
网易学院—第三章 asp数据库编程.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

在ASP中使用数据库ASP有一个最重要的功能,就是它可以让你非常轻松地连接数据库。通常都是和一个Access或者一个SQL数据库相连。因为Access是最容易起步的,同时,在你的机器上也许已经都装有Access了,所以,在下面的例子中,我们都将使用Access来做例子。一旦你学习了ASP和Access数据库连接的核心技术方法,当你开始使用SQL server的时候,你就会发现,两者所需要的关键技术是基本相同的。当你要连接数据库的时候,你需要在服务器上将这个数据库打开。你可以通过使用数据源名(DSN)或者通过在你的脚本语言中直接使用一个DSN-less连接的方法来连接和打开数据库。 创建一个数据源名(DSN) 你可以通过在控制面板中给你的数据库建立一个系统DSN来使你的数据库可以在ASP中连接使用。你可以在你的本地计算机上建立若干个DSN,每个DSN对应你使用的不同的数据库。在建立完DSN之后,你就可以在你的本地服务器上测试你的页面了。如果你的网站是由 ISP提供服务的,并且这个ISP支持ASP,那么很有可能它就会提供一个GUI接口,来给你的数据库创建一个DSN。 在Windows 95/98/NT中,打开控制面板(开始菜单设置控制面板),双击ODBC进入。 选择系统DSN,点击Add。 选择“Microsoft Access Driver”,点击结束。 填写数据源名。这是你给你的数据库起的名字,所以和一个alias是同样的操作。 在数据库选择中点击选择按钮,浏览系统中你创建的Access数据库所存放的位置。 点击OK 现在,新的DSN现在就会在系统DSN中显示,并且可以在你的本地服务器上使用了。连接数据库 让我们建立一个DSN-less连接,并且看看是如何连接数据库的。当你创建一个DSN的时候,你就已经存储了关于这个数据库的一些信息,所以你不需要在每次需要使用一些信息的时候重复它们,这些信息如:数据库类型、名称、存放地点和可选性、用户和密码。 要创建一个DSN-less连接,你就需要提供同样的信息。下面这个例子就显示了如何给一个叫products的数据库建立一个DSN-less连接: 第二行定义了数据库的驱动和物理路径。为了要使用一个DSN-less连接,你就需要知道实际的文件存放地点(绝对路径)。Server.MapPath给任何一个使用主机服务的人提供了一个简单的工作环境来查找出那些难于查到的实际访问路径。 如果我们已经建立了一个系统DSN,并命名为products,则连接码应该为: 现在,数据库就已经打开了,那么你可以做些什么呢?第一件事情当然就是阅读数据库中的一系列记录,并将它们放到你的页面中去。但是,在这之前,你需要一个recordset。Recordset 一个recordset是存储在特殊数据库表上的所有信息。所以,当你打开这个recordset的时候,表中所有的行和列的内容都是可访问的。你需要打开这个recordeset,正如你需要打开数据库连接一样。它们的命令是相似的:Set objRec = Server.CreateObject (ADODB.Recordset)objRec.Open downloadable, strConnect, 0,1,2 这个语句就创建了一个名为downloadable表的recordset(objRec),这个表在products数据库的strConnect中定义。使用Recordset open, 我们就可以循环浏览这个表,并且可以将它的所有内容都显示到屏幕上。或者,我们可以测试特定字段的内容,也可以只将我们关注的内容写到屏幕上去。 每一列代表一个字段。所以,如果数据库表如下所示:Product IDSKUNameFile1PR12345Product Ainstall_a.exe2PR12346Product BInstall_b.exe 那么,我们就有如下字段的内容:ProductID, SKU, Name, 和File。你的表很可能会有许多额外的字段内容,可能包含很多东西,如价格或者是产品(商品)描述。但是这个示意图可以给你提供最基本的数据库表的概念。填写recordset内容 使用recordset是非常容易的一件事情。如果你想要循环浏览数据库,并将所有的信息都打印到屏幕上显示,你可以按照下面来操作:While NOT objRec.EOF says to do this as long as we havent reached the end of the file Response.WriteobjRec(ProductID) & , Response.WriteobjRec(SKU) & , Response.WriteobjRec(Name) & , Response.WriteobjRec(File) & objRec.MoveNext Wend ; 即使你没有如此使用过loop,你仍然可以通过阅读这个代码来将信息写到comma-delimited字符串里,并且当数据库表中创建了一个新行的时候,就重新创建一个新的行,来记录表中的那一行。你可以使用同样的方法将数据写到HTML表格中去。通过使用Response.Write添加你的TABLE标签,需要记住以下几点:你的HTML 标签和引号中的内容。 如果你的标签或者内容使用了引号,注意使用双引号:. 使用&来连接变量和HTML/内容信息 选择recordset中的字段假设我们的products数据库同样包含一个叫OS的字段,假设这个字段是一个平台分界符。同样,让我们假设存储在这个字段的数据只能是如下的数据:Windows NT, Windows 95, Windows 98, Windows, Mac, Unix, 或者 Linux。 下面,我们就可以确认我们需要将哪个字段打印到屏幕上,而要忽略哪些那些字段。或者,我们可以选择哪些字段用一种格式,而另外的字段用其它的格式,如,使用不同的颜色。 使用一个简单的If.,循环就可以给我们提供更多的数据库控制权利。首先让我们来打印有关Windows NT产品的记录: FONT SIZE=+1Windows NT Products % While NOT objRec.EOF If objRec(OS) = Windows NT THEN specifies the criteria Response.Write & objRec(ProductID) & Response.Write & objRec(SKU) & Response.Write & objRec(Name) & Response.Write & objRec(File) & end if objRec.MoveNext Wend%添加一个记录 一旦你开始使用recordset和ASP了,你就会十分希望能够通过网络将数据添加到数据库中去。添加内容是非常重要的,如,当你需要你的网页浏览者留下它们的观点和看法,或者,当你想要进行管理更新的时候。 下面的代码打开了一个recordset,这个recordset是有关一个有着书本和它们作者名字的数据库表格。你可能曾经看到过这个,但是这次,最后三个说明书定义的指针类型是不同的:adOpenStatic, adLockOptimistic, adCmdTable: (如果你没有使用adovbs.inc的复制文件,第三行应该为:objRec.Open books, bookdb, 3,3,2). recordset现在就准备好接收数据了,你只需要告诉它添加什么。在这个情况下,假设我们从表格中取出变量:strBookTitle和strBookAuthor。我们的table, books有两个字段,称作Title 和 Author,所以我们可以通过使用下面的语句来添加一个新的记录: strBookTitle和strBookAuthor代表值,通常被用户访问。如果你只是想测试add功能,你可以给title和author添加一个变量只是需要记住使用引号。在你第一次使用它的时候,你可能会立即打开你的数据库,以确保更新的发生。Recordset类型 在显示的objRec.Open例子中,你会发现在末尾有0,1,2的字样。这些数字代表不同的指针类型。你是用的类型依赖于你将使用它来干什么。例如,如果你不需要修改或增加任何的记录,你可以使用一个Lock类型。而当你计划要修改或者更新数据库的时候,你所选择的类型就会不同。0,1,2 实际上代表:adOpenForwardOnly, adLockReadOnly, adCmdTable 当然,如果在你的服务器上已经有了adovbs.inc的备份,那么,你也可以不使用数字,直接使用这些单词。adovbs.inc 包括了这三个常量和其它常量的一个列表。Oracle大文本在ASP中存取问题的解决在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题。一、运行环境:1、Microsoft Windows 2000 Server + IIS 5.02、Oracle8i中文标准版二、建立数据表:CREATE TABLE SYSTEM.TEST(BLOB LONG,ID NUMBER)/三、源程序:1、数据存入程序:test.asp%表单提交处理部分-If request(ok)=1 then字符转换函数function tansstr(sstr) sstr=replace(sstr, , )sstr=replace(sstr,chr(13) & chr(10),br)tansstr=sstrend function提交数据赋值a=lenb(request(text)b=len(request(text)c=tansstr(request(text)打开数据库,打开test数据表以Rs为记录集Set OraSession=CreateObject(OracleInProcServer.XOraSession)Set OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)Set rs=OraDatabase.CreateDynaset(select * from test order by id desc,0) 求ID值if rs.eof thenid=1elseid=rs(id)+1end if因为受SQL语句长度大小限制所以,以非SQL语句存入数据-新建记录rs.DbAddNew经典就在本句:以RS记录集的Fields对象的DbAppendChunk方法处理大字段存入问题。rs.Fields(blob).DbAppendChunk(c)存入ID值rs(id)=id刷新记录集rs.DbUpdate显示结果部分- Response.write 数据已经存入数据库中。brResponse.write 总计占用字符数: font color=blue & formatnumber(b,2,-2,-2,-1) & /font 字brResponse.write 总计占用字节数: font color=blue & formatnumber(a,2,-2,-2,-1) & /font BytebrResponse.write a href=view.asp请调阅/a关闭数据连接。rs.closeset rs=nothingSet OraSession=nothingResponse.endEnd If%htmlbodyform method=POST action=test.asppfont color=#FF0000bOracle大字段在ASP中存取问题的解决:/b/font/pptextarea rows=13 name=text cols=104/textarea/ppinput type=submit value=存入 name=B1/pinput type=hidden name=ok value=1/form/body/html2、数据调出程序:view.asp%连接数据库,以只读方式打开数据表Set OraSession=CreateObject(OracleInProcServer.XOraSession)Set OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)Set Rs=OraDatabase.DbCreateDynaset(select * from test order by id desc,4)赋初值:定义每次截取字节大小为1024byte,最大可以设为65280byte (64K)Size=65280I=0Do以Rs记录集的Fields对象的DbGetChunk方法在循环中读出数据Text=Rs.Fields(Blob).DbGetChunk(I*Size,Size)Response.write Text求出每次取出数据的详细字节数Text_Size=Lenb(Text)I=I+1如果每次取出数据的详细字节数小于欲定义的截取字节大小则说明该条数据已经完毕,退出循环。 Loop until Text_SizeSize关闭数据连接Set OraSession=nothing%在ASP中使用Oracle数据库Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言。许多ASP开发人员一直在考虑,能否在开发互联网应用、电子商务网站、互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库。在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法。 在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Objects for OLE就是其中之一。Oracle Objects for OLE是Oracle开发的一个中间件,它允许使用微软的OLE标准的客户端应用程序访问Oracle的数据库。也许会有读者说,我们也可以使用ODBC访问Oracle的数据库。当然,可以使用ODBC访问Oracle数据库,但我认为,Oracle Objects for OLE比ODBC更安全,而且完全支持PL/SQL。PL/SQL是Oracle对SQL命令集的扩展,开发人员能够利用它对非结构化的SQL命令块进行流控制和逻辑设计。如果安装的是Oracle8i数据库,我相信你已经在使用Oracle Objects for OLE。如果还没有使用Oracle Objects for OLE,可以从Oracle的网站上下载它。 另外,我们还需要了解Oracle针对Visual Basic开发的二个对象和一个接口:OraSession、OraDynaset对象和OraDatabase接口。OraSession对象管理应用程序的OraDatabase、OraConnection和OraDynaset,它是由ASP的CreateObject而不是Oracle Objects for OLE创建的一个对象。OraDatabase接口向Oracle数据库表示表现用户对话,并为SQL、PL/SQL的执行提供方法。它们每个都有一些属性和方法。例如,OraDynaset对象有BOF、EOF、Bookmark、Connection等属性以及AddNew、Update、Delete、Edit、Refresh、Clone等10个方法。 下面我们就开始切入主题,讨论如何使用ASP处理Oracle数据库中的数据。 准备工作 我们需要什么样的环境和工具? 1)我使用了Oracle8i、IIS5.0、Windows2000专业版作为应用程序的开发和运行环境。 2)在Oracle数据库中建立一个名字为MYTABLE1或类似的表。 ID (type: number) User Name(type: varchar2) Phone(type: varchar2) Email(type: varchar2) 100 Colin Tong 999-999-8888 111 John White 888-888-8888 101 Don Wod 416-333-3344 数据的访问和存取 1) Instantiate OO4O Object, OraSession and interface OraDatabase for connecting to ORACLE. 1)初始化Oracle Objects for OLE、OraSession对象和OraDatabase接口,为连接ORACLE数据库作准备。 首先,使用CreateObject创建OraSession对象,然后通过打开一个与Oracle的连接创建OraDatabase对象,如下所示: % Set OraSession = CreateObject(OracleInProcServer.XOraSession) Set OraDatabase = OraSession.OpenDatabase(, _ username/password, Cint(0) % “username”和“password”是你所使用的关系数据库的用户名和口令。 2)创建OraDynaset对象执行SQL命令。我们可以使用CreateDynaset或DbCreateDynaset创建记录集。 % execute SQL Set OraDynaset = OraDatabase.DbCreateDynaset( _ select * from mytable1, cint(0) % 3)存取数据并删除创建的对象。 % Do While(OraDynaset.EOF = FALSE) Response.write(OraDynaset.Fields(ID) Response.write(OraDynaset.Fields(UserName) . others . . . OraDynaset.MoveNext Loop remove OraSession Set OraSession = Nothing % 编辑数据记录 我们将使用OraDynaset的方法实现对数据记录的编辑。 1)使用SQL语句创建OraDynaset对象。 % 创建ID= fID的记录的OraDynaset对象。 Set OraDynaset = OraDatabase.CreateDynaset(_ select * from MYTABLE1 where ID= & fID, cint(0) % fID是想插入更更新的记录的ID值。 2)执行OraDynaset更新或添加数据记录。 % 使用Edit方法更新ID=fID记录的域。 或使用AddNew插入一个新记录 OraDynaset.Edit OraDynaset.Fields(Phone).Value = fPhone OraDynaset.Update 删除创建的对话 Set OraSession = Nothing % 删除数据记录 如果已经真正地理解了我们在上面讨论的一些方法(Edit、Update和AddNew),也许有的读者已经知道该如何在Oracle数据库中删除记录了。 % 删除所有符合上面条件的记录 OraDynaset.Delete % 在Oracle8i中搜索和更新数据记录的代码 1)搜索 % RetriveRecProc.asp -使用ASP的Oracle Objects for OLE更新数据记录% % 定义作为OLE对象的变量 Dim OraSession Dim OraDatabase Dim OraDynaset创建OraSession对象 Set OraSession = CreateObject(OracleInProcServer.XOraSession)通过打开Oracle数据库的一个连接创建OraDatabase对象 一定要使用自己的用户名和口令访问Oracle数据库 Set OraDatabase = OraSession.OpenDatabase(, user/password, _ Cint(0) 创建OraDynaset对象执行SQL语句 Set OraDynaset = OraDatabase.DbCreateDynaset(_ select * from mytable1, cint(0) % htmlbody H3Retrieve All Records in MYTABLE1 Table ( in Oracle) Using oo4o/H3 table border=1 ID=Table1 % Do While(OraDynaset.EOF = FALSE) Response.Write(trtd) Response.write(OraDynaset.Fields(ID) Response.Write(/tdtd) Response.write(OraDynaset.Fields(UserName) Response.Write(/tdtd) Response.write(OraDynaset.Fields(Phone) Response.Write(/tdtd) Response.write(OraDynaset.Fields(Email) Response.Write(/td/tr) OraDynaset.MoveNext Loop 删除OraSession Set OraSession = Nothing % /table a href=javascript:window.history.go(-1) Back previous Page/a | a href=index.html Back home Page/a /body/html 2)更新 % UpdateRecProc.asp -使用ASP的Oracle Objects for OLE更新数据记录 % % 定义作为OLE对象的变量。 Dim OraSession Dim OraDatabase Dim OraDynaset 从提交的表格中获取字段值 fID = request.form(ID) fUserName = request.form(UserName) fPhone = request.form(Phone) fEmail = request.form(Email) 创建OraSession对象 Set OraSession = CreateObject(OracleInProcServer.XOraSession) 通过打开Oracle数据库的一个连接创建OraDatabase对象 Set OraDatabase = OraSession.OpenDatabase(, user/password, _ Cint(0) 创建ID= fID的记录的OraDynaset对象 Set OraDynaset = OraDatabase.CreateDynaset(_ select * from MYTABLE1 where ID= & fID, cint(0) 使用Edit方法更新ID=fID记录的字段 Do While(OraDynaset.EOF = FALSE) OraDynaset.Edit OraDynaset.Fields(UserName).Value = fUserName OraDynaset.Fields(Phone).Value = fPhone OraDynaset.Fields(Email).Value = fEmail OraDynaset.Update OraDynaset.MoveNext Loop % htmlbody H3Update A Record in MYTABLE1 Table (Oracle) Using oo4o/H3 The record (ID=%=fID%) has been updated successfully!br You can view the result a href=RetrieveAllRec.asp here/a p a href=javascript:window.history.go(-1) Back previous Page/a &bnsp;&bnsp; a href=javascript:window.history.go(-2) Back home Page/a % 删除OraSession对象 Set OraSession = Nothing % /body荆?html 至此,我们已经讨论了如何在ASP代码中使用Oracle Objects for OLE来处理Oracle数据库中的数据。 使用 存储过程 我们已经讨论了如何在ASP中访问Oracle数据库,所有的SQL语句都可以嵌入在ASP网页中。如果在ASP中使用存储过程,将更能够更有效地处理数据。我建议读者除在ASP中嵌入SQL语句外,还应当使用PL/SQL存储过程。在Oracle数据库中创建存储过程已经超出了本文章的范围,在这里就不再进行介绍了。 ASP和Oracle数据库是二种比较流行的技术,都有相当广泛的用户群,如果能够有机地将二者结合起来,将能够给工作带来许多方便,希望这篇文章能够起到抛砖引玉的作用,使读者能够更好地探索将这二种技术结合使用的途径。 使用数据绑定控件显示数据创建带有数据的互动网页很简单,只需通过拖拉,设置属性并储存页面即可,并不需要编程,不过Visual InterDev提供了一个完整的对象模型,可让你调整应用程序,进行用户确认并控制Web应用程序,也支持DHTML及IE4数据控制以获得更丰富的用户界面,要生成一个使用数据控件创建的简单数据输入页面的步骤如下:(1),在创建一个新的数据连接后,将Recordset控件从设计时期控件的Toolbox拖到页面上,通过设置控件的属性将这个Recordset控件绑定到对应的数据连接上,你也可以把一个Data Command拖拉到页面上,并将Recordset控件和它绑定在一起;(2),将一个TextBox控件拖到页面上,开启其属性并将其绑定到Eecordset控件上,你也可以直接从DataEnvironment中拖拉一个字段到页面上。(3),将一个RecordsetNavbar控件放置到页面上,设置属性并将其绑定到Recordset控件上。(4),确认PageObject控件是页面上的第一个控件并发布这个页面,你就可以随意浏览纪录。(5),切换使用控件的HTML的类型,打开Recordset控件的属性窗口并切到Implementation Tab,无论选择一般HTML(等于ASP)或IE4HTML(基于DHTML)均可重新发布这一页。(6),现在到Source窗口,当Outline Tab被显示时可以看到对象模型被每一个设计时期控件显露出来。本文由沙滩小子整理制作,您可以转载,但请注明其出处,谢谢!随机访问Recordset的一条记录假设这个数据表有一个唯一的ID字段,并至少有一条记录。随机存取其中一条记录的方法是非常简单的,可以分为四步:1、取得记录总数n。2、把所有的ID号存储到一个数组中3、产生一个不大于n的随机数m4、从数组中取出第m个ID号,查询数据表,取得记录数据。下面是部分代码:$#60;% set conn = Server.CreateObject(ADODB.Connection) conn.open $#60;conn string$#62; * (step 1) * set rs = conn.execute(Select count(id) from someTable) rCount = rs(0) * (step 2) * set rs = conn.execute(“select id from someTable”) cnt = 1 dim RRs redim RRs(rCount) do while not rs.eof RRs(cnt) = rs(0) cnt = cnt + 1 rs.movenext loop * (step 3) * randomize currentRR = cLng(rnd*rCount+0.5) ID = RRs(currentRR) * (step 4) * sql = “select otherfield from someTable where id=” & ID set rs = conn.execute(sql) response.write “ID # ” & ID & “ = ” & rs(0) rs.close: set rs = nothing conn.close: set conn = nothing %$#62;对于SQL Server,还有更加有效率的方法。比如设计两个存储过程。我这里只是阐明一些思路,并希望这种思路可以同时用在Access和SQL Server中。ADO 存取数据库时如何分页显示裁词?ADO 存取数据库时的分页显示?如果你使用过目前众多网站上的电子公告板程序的话,那你应该会知道电子公告板程序为了提高页面的读取速度,一般不会将所有的帖子全部在一页中罗列出来,而是将其分成多页显示,每页显示一定数目的帖子数,譬如 20 条。想不想了解如何实现分页显示?请看本文!动态网站设计十八般武艺 -ASP 篇一文从第一期至今已和朋友们一起度过了大半个年头,相信通过在这一段时间中的学习、实践到再学习、再实践,大家已经能够熟练运用 ASP 的内建对象、 ActiveX 组件去编写一些基本的 ASP 应用程序。从我收到的朋友们的来信中可以明显的感觉到,大家的 ASP 功力正不断地提升。最近很多朋友来信希望我写一些 ASP 在现实运用中的实例。因此,从本期开始我决定将动态网站设计十八般武艺 -ASP 篇的定位从介绍和学习 ASP 基础知识转向到 ASP 实际运行的探讨和深化。应朋友们的要求,在本期中我将给大家着重谈一谈“ADO 存取数据库时如何分页显示”的问题。 什么是 ADO 存取数据库时的分页显示?如果你使用过目前众多网站上的电子公告板程序的话,那你应该会知道电子公告板程序为了提高页面的读取速度,一般不会将所有的帖子全部在一页中罗列出来,而是将其分成多页显示,每页显示一定数目的帖子数,譬如 20 条。这就是数据库查询的分页显示,如果你还不明白,去看看 yahoo 等搜索引擎的查询结果就会明白了。 那么究竟如何才能做到将数据库的查询结果分页显示呢?其实方法有很多,但主要有两种: 一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。 二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。 两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。 我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记 娣旁诜衿髂诖嬷校缓笤诮蟹忠车却恚绻庇谐? 100 个的客户在线查询,那么 ASP 应用程序的执行效率将大受影响。但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的 ASP 程序编写相对第二种方法要简单明了得多。在这里作者就以我们常见的 ASP BBS 程序为例,来给大家分析一下如何在 BBS 程序里实现分页显示功能,由于我们一般使用的 BBS 程序的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。 进行 ADO 存取数据库时的分页显示,其实就是对 Recordset 的记录进行操作。所以我们首先必须了解 Reordset 对象的属性和方法: BOF 属性:目前指标指到 RecordSet 的第一笔。 EOF 属性:目前指标指到 RecordSet 的最后一笔。 Move 方法:移动指标到 RecordSet 中的某一条记录。 AbsolutePage 属性:设定当前记录的位置是位于哪一页 AbsolutePosition 属性:目前指标在 RecordSet 中的位置。 PageCount 属性:显示 Recordset 对象包括多少“页”的数据。 PageSize 属性:显示 Recordset 对象每一页显示的记录数。 RecordCount 属性:显示 Recordset 对象记录的总数。 下面让我们来详细认识一下这些重要的属性和方法 一、 BOF 与 EOF 属性 通常我们在 ASP 程序中编写代码来检验 BOF 与 EOF 属性,从而得知目前指标所指向的 RecordSet 的位置,使用 BOF 与 EOF 属性,可以得知一个 Recordset 对象是否包含有记录或者得知移动记录行是否已经超出该 Recordset 对象的范围。 如: $#60; % if not rs.eof then . %$#62; $#60; % if not (rs.bof and rs.eof) %$#62; 若当前记录的位置是在一个 Recordset 对象第一行记录之前时, BOF 属性返回 true,反之则返回 false。 若当前记录的位置是在一个 Recordset 对象最后一行记录之后时, EOF 属性返回 true,反之则返回 false。 BOF 与 EOF 都为 False:表示指标位于 RecordSet 的当中。 BOF 为 True:目前指标指到 RecordSet 的第一笔记录。 EOF 为 True:目前指标指到 RecordSet 的最后一笔记录。 BOF 与 EOF 都为 True:在 RecordSet 里没有任何记录。 二、 Move 方法 您可以用 Move 方法移动指标到 RecordSet 中的某一笔记录,语法如下: rs.Move NumRecords,Start 这里的“rs”为一个对象变量,表示一个想要移动当当前记录位置的 Recordset 对象;“NumRecords”是一个正负数运算式,设定当前记录位置的移动数目;“start”是一个可选的项目,用来指定记录起始的标签。 所有的 Recordset 对象都支持 Move 方法,如果 NumRecords 参数大于零,当前记录位置向末尾的方向移动;如果其小于零,则当前记录位置向开头的方向移动;如果一个空的 Recordset 对象调用 Move 方法,将会产生一个错误。 MoveFirst 方法:将当前记录位置移至第一笔记录。 MoveLast 方法:将当前记录位置移至最后一笔记录。 MoveNext 方法:将当前记录位置移至下一笔记录。 MovePrevious 方法:将当前记录位置移至上一笔记录。 Move n 方法:移动指标到第 n 笔记录, n 由 0 算起。 三、 AbsolutePage 属性 AbsolutePage 属性设定当前记录的位置是位于哪一页的页数编号;使用 PageSize 属性将 Recordset 对象分割为逻辑上的页数,每一页的记录数为 PageSize( 除了最后一页可能会有少于 PageSize 的记录数 )。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。 与 AbsolutePosition 属性相同, AbsolutePage 属性是以 1 为起始的,若当前记录为 Recordset 的第一行记录, AbsolutePage 为 1。可以设定 AbsolutePage 属性,以移动到一个指定页的第一行记录位置。 四、 AbsolutePosition 属性 若您需要确定目前指标在 RecordSet 中的位置,您可以用 AbsolutePosition 属性。 AbsolutePosition 属性的数值为目前指标相对於第一笔的位置,

温馨提示

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

评论

0/150

提交评论