管理結果集的分頁

2021-03-31 08:56:31 字數 1822 閱讀 2185

發布日期:2023年9月24日

問:我怎樣才能使用sql server對結果集的分頁進行管理?

答:您經常需要使用一次一頁的形式來顯示乙個結果集,並保證使用者可以輕鬆檢視各個結果集頁面,特別是您在為web站點開發程式的時候。雖然您可以使用ado recordset物件對結果集進行分頁,但是這種解決辦法不具有伸縮性。

為了解決伸縮性問題,您需要在結果集中包括乙個具有唯一id的列,例如在表中包括乙個主鍵。以下**介紹了乙個簡單的例子,它使用兩個儲存過程在各個頁面間進行導航:

create procedure spgetnextpage

@id varchar(11) =' 0',

@rows int = 0

asset nocount on

set rowcount @rows

select

a.au_id,

a.au_fname + ' ' + au_lname as name

from

authors a

where

a.au_id > @id

order by

a.au_id

set rowcount 0

set nocount off

gocreate procedure spgetprevpage

@id varchar(11) =' 0',

@rows int = 0

asset nocount on

set rowcount @rows

select

a.au_id,

a.au_fname + ' ' + au_lname as name

into

#temp

from

authors a

where

a.au_id <@id

order by

a.au_id desc

set rowcount 0

select

*from

#temp

order by

au_id

set rowcount 0

set nocount off

本示例所使用的樣本資料來自pubs資料庫,您可以對authors表進行分頁。如果想返回第一頁的前兩行資料,您可以使用帶有以下引數的spgetnextpage儲存過程: exec spgetnextpage @id=' 0', @rows=2

172-32-1176 johnson white marjorie green
如需返回接下來的兩個作者,您可以將後一行的id傳遞給spgetnextpage

exec spgetnextpage @id='213-46-8915', @rows=2
結果頁顯示:

238-95-7766 cheryl carson michael o'leary
如果想移動到先前頁面,您可以使用第一行的id呼叫spgetprevpage

exec spgetprevpage @id='238-95-7766', @rows=2
結果將顯示了您在前面看到的第乙個頁面。使用這種方法的乙個缺點是具有唯一id的列決定了結果集的順序。在本文的情況下,au_id字段必須在作者姓名欄位的前面。

— sql server mvps

管理結果集和分析結果集

管理結果集 jdbc 使用 resultset來封裝執行查詢得到的結果,然後通過移動resultset的記錄指標來取出 結果集中的內容。已預設方式開啟的resultset是不可更新的,當我門在建立statement或者 preparedstatement 時傳入額外的引數,便可建立可更新的resul...

PageHelper分頁結果集不準確

pagehelper遇到resultmap的collection後,分頁總是不對。由於pagehelper分頁總數是根據count 0 來計算出來的,而collection會把結果集合並 一對多的情況 計算總數在合併結果集之前,所以計算結果不對。同計數原理一樣,分頁實際在合併結果集之前進行的,這就導...

對結果集進行分頁顯示

步驟 1 有乙個方法呼叫處。2 處理的request例項中page屬性是指當前頁,pagesize屬性石指一頁顯示多少條。3 編寫遞迴方法 3 計算當page pagesize 是否小於request的總數量ordertotal。if recursive page pagesize response...