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
%>


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。