發布日期:2023年9月24日
問:我怎樣才能使用sql server對結果集的分頁進行管理?
答:您經常需要使用一次一頁的形式來顯示乙個結果集,並保證使用者可以輕鬆檢視各個結果集頁面,特別是您在為web站點開發程式的時候。雖然您可以使用ado recordset物件對結果集進行分頁,但是這種解決辦法不具有伸縮性。
為了解決伸縮性問題,您需要在結果集中包括乙個具有唯一id的列,例如在表中包括乙個主鍵。以下**介紹了乙個簡單的例子,它使用兩個儲存過程在各個頁面間進行導航:
create procedure spgetnextpage本示例所使用的樣本資料來自pubs資料庫,您可以對authors表進行分頁。如果想返回第一頁的前兩行資料,您可以使用帶有以下引數的spgetnextpage儲存過程: exec spgetnextpage @id=' 0', @rows=2@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
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...