asp分页偏移(亲测)
ASP
2025-01-07 13:49
99
0
<%
' 数据库连接配置
Dim conn, connStr, rs, rsPage, sql, pageSize, currentPage, offset
connStr = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=bds257174220_db;User ID=sa;Password="
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr
' 假设每页显示10条记录
pageSize = 10
' 获取当前页码,默认为第一页
If Request.QueryString("page") = "" Then
currentPage = 1
Else
currentPage = CInt(Request.QueryString("page"))
End If
' 计算偏移量
offset = pageSize * (currentPage - 1)
' SQL 查询 - 使用OFFSET和FETCH NEXT实现分页
sql ="SELECT * FROM (select row_number() over(order by ID desc) as RowNumber,* from News)A Where RowNumber>="&((currentPage-1)*pageSize+1)&" AND RowNumber<"&(currentPage-1)*pageSize+1+pageSize&" order by RowNumber desc"
'sql ="SELECT * FROM (select row_number() over(order by ID desc) as ID,* from News)A Where ID>="&((page-1)*pageSize+1)&" AND ID<"&((page-1)*pageSize+1+pageSize))&" order by ID desc"
'sql = "SELECT * FROM News ORDER BY ID DESC offset 0 ROWS FETCH NEXT 100 ROWS ONLY"
'sql = "SELECT top 100 * FROM News ORDER BY ID OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY"
'sql = "SELECT TOP 10 * FROM (SELECT * FROM News ORDER BY id) AS SubQuery WHERE SubQuery.ColumnName NOT IN (SELECT TOP 10 id FROM TableName ORDER BY id);"
'sql = "SELECT * FROM News ORDER BY id OFFSET " & offset & " ROWS FETCH NEXT " & pageSize & " ROWS ONLY;"
'sql = "SELECT top 100 * FROM News ORDER BY ID OFFSET " & offset & " ROWS FETCH NEXT " & pageSize & " ROWS ONLY;"
' 创建数据库连接和查询
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn
' 展示数据
Do While Not rs.EOF
Response.Write rs("Title") & "<br>" ' 假设字段名是 UserName
rs.MoveNext
Loop
' 关闭数据库连接
rs.Close
Set rs = Nothing
%>
<!-- 分页导航 -->
<%
' 计算总记录数和总页数
Set rsPage = Server.CreateObject("ADODB.Recordset")
rsPage.Open "SELECT COUNT(ID) FROM News",conn,1,1
'totalRecords = rs.recordcount
totalRecords = rsPage.Fields(0).Value
rsPage.Close
totalPages = Int((totalRecords + pageSize - 1) / pageSize) ' 向上取整
Response.Write "<br>页码: "
For i = 1 To totalPages
If i = currentPage Then
Response.Write i & " "
Else
Response.Write "<a href='fenye.asp?page=" & i & "'>" & i & "</a> "
End If
Next
conn.Close
Set conn = Nothing
%>