数据库记录分页技术与实现
注意:
首先,从头到尾读数据库记录来确定要显示的页面及记录的方法并不可取,因为每次均需从数据库中读取所有记录,丝毫没有解决数据库服务器负担过重的问题;
其次,将数据库记录存入到内存数组、临时数据表或临时文件中再分页显示的方法也不理想,虽然响应效率可能有所提高,但必须为每个用户分配足够的内存和磁盘空间。
第三,rs.Open qString, conn, adOpenStatic, adLockReadOnly, adCmdText,这里必须使用adOpenStatic或adOpen-Dynamic游标类型,而不能使用前向游标,否则会使RecordCount等属性或方法返回的值不正确。
第四,SQL语句中必须使用Order By子句指定一个排序字段,以便保持各页记录的相对位置不变,否则每页显示的内容会变得杂乱无章。
<% @ LANGUAGE="VBScript" %>
<%
Option Explicit
Response.Buffer = True
Const adUseClient = 3
Const adCmdText = 1
游标类型
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
加锁类型
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
rs.PageSize = pagesize
rs.CacheSize = pagesize
rs.CursorLocation = adUseClient
rs.Open qString, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
strPageCount = rs.PageCount
If 1 > strPageCurrent Then strPageCurrent = 1
If strPageCurrent > strPageCount Then strPageCurrent = strPageCount
numrecs = rs.RecordCount
rs.AbsolutePage = strPageCurrent
Do While not rs.EOF and (I < pagesize)
I = I + 1
rs. MoveNext
Loop
相关新闻>>
- 发表评论
-
- 最新评论 更多>>