|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP脚本是采用明文(plaintext)方式来编写的。关于Recordset分页时呈现正数的征象,信任会有良多人碰到过这个成绩,偶然百度、GOOGLE也不得其解,如今由我来总结一下。呈现正数,次要和游标范例有干系。(为举例便利,假定已有一个conn.asp链接数据库的文件而且已include)如今举一个例子,代码以下:关于Recordset分页时呈现正数的征象,信任会有良多人碰到过这个成绩,偶然百度、GOOGLE也不得其解,如今由我来总结一下。
呈现正数,次要和游标范例有干系。(为举例便利,假定已有一个conn.asp链接数据库的文件而且已include)如今举一个例子,代码以下:
=======================================================
sql="Select*from表名where前提orderbyIDdesc"这里的orderby前提可依据本人必要改写
Setrs=conn.execute(sql)===注重一下这一句===
rs.pagesize=10===设置每页的纪录数为10===
page=request.querystring("page")
Ifpage=""Thenpage=1
IfNotIsNumeric(page)Thenpage=1
page=clng(page)
Ifpage<1Thenpage=1
Ifpage>rs.pagecountThenpage=Vrs.pagecount
rs.absolutepage=page
dimc
c=1
DowhileNotrs.eofAndc<=rs.pagecount
输入内容
c=c+1
rs.movenext
Loop
做页面的链接
=======================================================
依据下面的代码,RecordSet工具间接由代码:Setrs=conn.execute(sql),利用该句后,RecordSet工具默许的游标为0,即游标只能向前转动,锁定范例为0,暗示只读锁定,不克不及更新RecordSet工具。
以是,关于分页时假如呈现正数,则反省RecordSet工具是不是写为以上情势,要写成:
Setrs=Server.CreateObject("adodb.recordset")
rs.opensql,conn,1,3
以上暗示游标为1,可向前向后挪动;锁定范例为3,可批量更新多笔记录。
依据上述办法做基础上不再见有成绩,但为保险,依据RecordSet分页的道理是依据读取一切纪录后猎取纪录数,以是先让游标转动一圈,在级rs.pagesize=10前面加上以下两句:
rs.movelast游标移至最初
rs.movefirst游标移到最前
已知RecordSet的分页道理为先把全部数据库内里的纪录读出后才干猎取rs.Recordcount(纪录总数)的值。这类分页办法对照复杂,可是有一个致命的害处,当数据库里纪录数有良多条时,依据其分页道理,如许就会占用很高的体系资本,十分华侈,倡议在实践编程中不利用该办法。如今给人人一个思绪,能够在SQL查询语句里做分页处置,每次读取流动的纪录数,详细以下:
从数据库表中的第M笔记录入手下手取N笔记录,使用Top关头字:注重假如Select语句中既有top,又有orderby,则是从排序好的了局会合选择:
SELECT*
FROM(SELECTTopN*
FROM(SELECTTop(M+N-1)*FROM表名OrderbyIDdesc)t1)t2
OrderbyIDdesc
用以上SQL语句举行分页,毛病会对照少,最主要得是效力对照高。
对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了, |
|