ASP讲座之八:ASP和数据库(三)-ASP教程,数据库相关
来源:作者: 发布时间:2007-12-25 13:34:32


在上两讲中,我们讲解了asp中数据库的基本使用,今天将介绍几种很实用的技术。
一、 分页技术 前面我们介绍了怎样检索数据并输出到浏览器端,对少量数据而言,那样简单的输出处理是完万能够的,但是若数据量很大,有几百条甚至上千条,一次将如此多的数据全部输出到客户端是不现实的,一来页面从上到下拉得很长,二来客户端等待的时间过长,三来服务器的负载过大。所以采取分页输出很必要。 需要:输出northwind.mdb“产品”表中的数据至浏览器,每页显示10条。 例wuf60.asp,这段代码还是有点难度的,要多看多体会,adoaccess.asp在上讲中提到过。 注:该例程吸收了某些书籍中好的部分,特此声明。 <%@ language="vbscript" %>
<% dim recordperpage, abspagenum, totalpages, absrecordnum, rstest, strsql abspagenum - 当前页为第几页 totalpages - 总的页数 absrecordnum - 当前页中某一条记录的序号, 如 1-10
recordperpage = 10 每页显示的记录数
取得所输出数据的 当前页码 if request.servervariables("content_length") = 0 then 若没收到表单递交的数据(如首次加载该页时), 则从第 1 页开始显示 abspagenum = 1 else 取出按 按钮 时的页码 abspagenum = cint(request.form("presspagenum")) 如按 上一页 则页码 -1, 按 下一页, 则页码 +1 if request.form("submit") = "上一页" then abspagenum = abspagenum - 1 elseif request.form("submit") = "下一页" then abspagenum = abspagenum + 1 end if end if
创建记录集对象 set rstest = server.createobject("adodb.recordset")
rstest.cursorlocation = aduseclient 这样配置可减轻数据库负载 rstest.cursortype = adopenstatic 游标需要前后移动,不能设为仅向前 rstest.cachesize = recordperpage 配置这个选项会提高性能
strsql = "select * from 产品 order by 产品id" rstest.open strsql, cnn, , , adcmdtext
rstest.pagesize = recordperpage 配置每一页的记录数
if not(rstest.eof) then rstest.absolutepage = abspagenum end if
totalpages = rstest.pagecount %>
<% 下面部分 输出当前页的数据至浏览器 %>
单价 |
产品名称 |
<% 用循环输出当前页的 10 条数据 for absrecordnum = 1 to rstest.pagesize %> <%= rstest("单价")%> | <%= rstest("产品名称")%> | <% rstest.movenext if rstest.eof then exit for 假如已到记录尾, 退出 - 如最后一页数据不满页时 end if next
rstest.close : cnn.close set rstest = nothing : set cnn = nothing %>
<% 下面部分 是两个按钮 "上一页" "下一页" %>
[ 第 <%= abspagenum %> 页, 共 <%= totalpages %> 页 ]
|