电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > ASP教程 > 正文
asp入门教程之讲解ASP脚本执行的顺序
asp入门教程之讲解ASP脚本执行的顺序
2010-5-14 8:09:02  文/网络收集   出处:电脑软硬件应用网   
看了不少介绍,知道set rs=conn.execute(sql)的执行效率比rs.open sql,conn,1,1要高很多,但是set rs=conn.execute(sql)这种执行方式也有很多不足,首先它不具有分页属性,比如rs.pagesize,rs,absolutepage等属性,这样的话,通过这种方式set rs=conn.execute(sql)执行的速度虽然快了,但是却不能按普通方式进行分页,怎么办呢??
 第二天,查了一下网上的资料,突然想到是否可以把所需数据提到一个数组里,然后对数组进行分页呢?首先把set rs=conn.execute(sql)查询出来的结果通过rs.getrows()取出来附给一个数组,于是我就在各网站上找分页的帖子,虽然发现不少高效率分页的帖子(包括存储过程等),可结果发现全都是需要通过SQL执行的,即翻页的时候也需要执行SQL语句,此时头都晕了,优化的也只是SQL语句,此时实在没办法,只好自己努力了!终于完成了一个数组分页的粗稿,代码不是很完善,让大家一起来研究一下!代码如下:
首先有一个index.asp查询页:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head>  <body><FORM id="SearchForm" name="SearchForm" method="post" action="search.asp?act=cha"> <div class=input> <input id=keyword onmouseover=this.focus() title="快速搜索您的留言记录" onfocus=this.select() class="in"  maxlength=35 name=keyword /> <select style="width:120px;margin-top:-25px" name="ChannelID"> <option value="k2">留言人</option> <option value="k1">留言内容</option> </select>   <Input id=search_btn type=submit value="查询"> </div> </FORM> </body> </html> search.asp的代码:
 
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <%  If request.querystring("act")="cha" Then  search_type=request.FORM("ChannelID")  keywords=request.form("keyword")  if search_type="k1" then '按照留言内容搜索  sql="select * from gbook_rec where g_content like '%"&keywords&"%'"  ElseIf search_type="k2" then  'if search_type="k2" then '按照留言人搜索  sql="select * from gbook_rec where g_name like '%"&keywords&"%'"  Else   response.end  end If  Set rs=conn.execute(sql)  If  rs.eof And rs.bof Then  %> <div class="search">没有查找到您要的记录!</div> <%  response.End   Else   aResults=rs.getrows()'取出数据放入数组ROW中  application("data")=aResults  Set rs=nothing conn.close '关闭数据库  End IF  End If   aResults=application("data")  Dim i,row,pagesize,epage,numb,pagecount,fenye  numb=UBound(aResults,2)+1 '总记录行数  pagesize=2 '每页条数   If numb Mod pagesize = 0 Then '判断总页数  pagecount=Int(numb/pagesize)  Else  pagecount=Int(numb/pagesize)+1  End If   epage=request.querystring("page")   If epage="" Then epage=1       For i=(epage-1)*pagesize To epage*pagesize-1  If i>UBound(aResults,2) Or i<0 Then Exit for  %> <div class="content"> <ul><li>记录<%=i+1%></li>   <li>留言人:<%=aResults(1,i)%></li>   <li>内容:<%=aResults(2,i)%></li>   <li>时间:<%=aResults(3,i)%></li>   <li>IP:<%=aResults(5,i)%></li> </ul> </div> <%  Next  If numb>pagesize Then   fenye="<a href=search.asp?page=1>首页</a>  " fenyefenye=fenye&"<a href=search.asp?page="&epage-1&" title="&epage-1&">前页</a>  "  fenyefenye=fenye&"<a href=search.asp?page="&epage+1&" title="&epage+1&">后页</a>  "  fenyefenye=fenye&"<a href=search.asp?page="&pagecount&">末页</a>  "  fenyefenye=fenye&"<BR>"  fenyefenye=fenye&"总页数"&pagecount&",当前页"&epage&",总记录为:"&numb  response.write fenye  End if  %> </body> </html> 总结:本人认为以上代码除了初次查询需要连接到数据库外,其他时间都不需要连接数据库,对于大型数据查询或连接人数比较多的时候对资源节省还是很有用处理的!另外将查询数组保存在application对象上,还可以根据application( "data")("username")来判断某人查询过什么。
  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    三种中文分词算法优劣比较
    ASP教程:删除记录和链接数据库程序解…
    ASP生成html或者txt文件实例
    分享常用7款天气预报代码iframe嵌入…
    ASP错误信息解决:IIS启用父路径的设…
    禁止网页缓存的方法及代码
    推荐如何抓取显示防盗链图片的方法
    为什么浏览不了dreamweaver中ASP文件…
    asp将access数据导出为excel电子表的…
    ASP中Session的优缺点及使用技巧
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号