SQL SEVER中如何实现分页?

2025-02-25 15:06:38
推荐回答(3个)
回答1:

'下面是我用VB.net写的 可能你看不懂.原理很简单,
'就是把 你的数据从数据库读出来,加载到DataSet里面.
'对dataset的tataTable进行处理,如我5条记录分一次页.
Dim dt As DataTable = Nothing
Dim x As Integer = 0
Dim i As Integer = 1
'判断有多少页面....
Public ReadOnly Property pages() As Integer
Get
Return x / 5
End Get
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_init()
End Sub
Sub _init()
If dt Is Nothing Then
dt = core.ReturnAllMessage()
x = dt.Rows.Count
End If
Try
i = Integer.Parse(Request.QueryString("page").Trim())
Catch ex As Exception
i = 1
Me.Response.Redirect("message.aspx?page=" & i)
End Try
If i = 1 Then
Me.LinkButton1.Enabled = False
If x > 1 Then
Me.LinkButton2.Enabled = True
Else
Me.LinkButton2.Enabled = False
End If
Else
Me.LinkButton1.Enabled = True
If i < Me.pages Then
Me.LinkButton2.Enabled = True
Else
Me.LinkButton2.Enabled = False
End If
End If
Me.lblCount.Text = "


共:" + Me.pages.ToString() + "页 现在是第:" + i.ToString() + "页
"
Me.bandDate() '\\
End Sub

回答2:

SELECT TOP 页大小 * FROM Users WHERE (ID NOT IN (SELECT TOP (页大小*(页数-1)) ID FROM Users ORDER BY ID DESC)) ORDER BY ID DESC 注:页大小指的是每页显示的条数。
加油吧!

回答3:

使用sql server 2005的分页功能吧,很方便的!
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[DataList]
@PageNum int
AS
BEGIN

SET NOCOUNT ON;

SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY [OrderID] DESC) AS RowID, * FROM [OrderList]) AS OrderTable WHERE RowID BETWEEN @PageNum AND @PageNum+20
END