当前位置: 移动技术网 > IT编程>开发语言>.net > 在ASP中改善动态分页的性能

在ASP中改善动态分页的性能

2018年10月14日  | 移动技术网IT编程  | 我要评论

箭在弦上电视剧下载,金融在职研究生,男子扑上台强吻车模

原作:张立锋 张 禾

概 述  
现在有不少介绍利用asp实现动态分页的文章,方法大同小异,就是每次利用ado返回原始数据满足条件记录集中的指定页。但在实际工程应用中,原始数据量通常很大,原始数据的加工比较慢,如果每次换页原始数据都要加工一次,则会严重影响应用程序运行的性能。  
解决上述问题主要有两种途径:一种途径是将查询条件相对固定,利用相对固定的查询条件对原始数据进行加工,生成一个小数据量的中间库,每次查询都对中间库进行操作。这样虽然会提高程序的性能,但会影响程序的灵活性,而且 server端还需定时对原始数据进行加工维护。另一个途径是在server端保存查询的结果。这样虽然不能改善查询的性能,但client端换页时server端能够很快响应。第一种途径的实现比较简单,本文介绍第二种途径的实现方法。  

实现方法  
将server端的查询结果保存在一个动态数组中,即在 session_onstart过程中声明一个二维的动态数组。当server端收到client端提交的申请后,首先判断申请是条件查询还是换页,如是条件查询则判别查询条件是否与上次提交的查询条件不同,如不同则执行查询,将查询结果保存在该数组中,然后向client端返回第一页的内容,否则直接从该数组中返回相应页的内容。  
程序实现  
1.定义二维数组及其他变量  
sub session_onstart
dim tempdb()  
redim preserve tempdb(1,2)  
session(“storedarray") = tempdb  
’定义一个session数组
session(“ipagecount")=0
session(“ipageno")=0
......
end sub

2.调用存储过程返回数据  

sub getrecordset(strbbmc,strkssj ,
strzzsj ,strnodecode ,strfxzl )
参数为报表名称和各个限制条件
select case strbbmc
case “交易汇总表"
strcnn=“provider=msdasql;dsn=sqldb;
uid=sa;pwd=123456;database=vlog;"
set objcnn=server.createobje(“adodb.connection")
objcnn.commandtimeout = 9999999
objcnn.connectiontimeout = 99999999
objcnn.cursorlocation = aduseclient
objcnn.open strcnn 打开连接  
set objrs =server.createobject
(“adodb.recordset")  
objrs.pagesize = ipagesize
objrs.cachesize = ipagesize
objrs.open “sszhatmlog ‘“ & strkssj & " ,
‘“ & strzzsj & ", ‘“ & strnodecode & " ,
‘“ & strfxzl & "",objcnn,adopenstatic ,
adlockreadonly,1
’执行存储过程返回查询结果
......
end sub  

3.将查询结果保存到动态数组  

sub saverecordset()  
if objrs.eof = false then
objrs.movelast
session(“irowcount") = objrs.recordcount
session(“ifieldcount") = objrs.fields.count
session(“ipagecount") = objrs.pagecount
redim preserve temparray(session
(“irowcount"),session(“ifieldcount"))  
’temparray是一个二维动态数组,  
根据记录集大小重新定义其大小
objrs.movefirst
icount=0  
do while objrs.eof=false
icount = icount + 1  
for i= 1 to session(“ifieldcount")
temparray(icount,i)=objrs.fields.item
(i-1).value
next  
objrs.movenext  
loop
session(“storedarray") = temparray  
objrs.close  
else
session(“ipagecount") = 0
end if
end sub

4.显示记录内容  

sub showrecord()
......
localarray=session(“storedarray")  
ishowtotal=(ipagecurrent-1)*ipagesize+1  
irowloop = 1
do while irowloop < = ipagesize and ishowtotal

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网