關(guān)于翻頁的問題
2024-07-21 02:07:18
供稿:網(wǎng)友
老聲常談?不見得
什么翻頁最簡單?ado唄
設(shè)定pagesize然后用pagecount,absolutepage來控制 很爽,想怎么翻,就怎么翻(當(dāng)然指游標(biāo)在客戶端的時(shí)候)例如:
rs.absolutepage = intpage''此處是一個(gè)模塊級(jí)變量,用于控制現(xiàn)在翻到哪一頁
for i = 1 to cpagesize
if not rs.eof then
''添加到listview
rs.movenext
else''如果已經(jīng)到最后,就退出
exit for
end if
基本上,采用上面這種翻頁方式的都是才開始做數(shù)據(jù)庫程序的新手,因?yàn)檫@樣做的前提條件是你必須把需要的記錄一次全部查詢出來,返回到客戶端,就在查詢的那個(gè)時(shí)候,系統(tǒng)一定會(huì)慢的象死機(jī),大量數(shù)據(jù)在瞬間要返回到客戶端,嘿嘿如果同時(shí)有5~6個(gè)用戶使用這個(gè)查詢,估計(jì)更慢!在數(shù)據(jù)量少的時(shí)候可以考慮,但即使這樣,也不能保證以后數(shù)據(jù)不會(huì)多,如果你的系統(tǒng)不斷錄入新的數(shù)據(jù),那么總有一天這種翻頁會(huì)讓用戶不可忍受的,所以最好盡量少采取這種翻頁方式。
目前的翻頁,一般都采取這幾種方式,這個(gè)不是我寫的,不敢亂來,請(qǐng)參考
http://dev.csdn.net/develop/article/37/37213.shtm
在其中,作者用的表
create table [testtable] (
[id] [int] identity (1, 1) not null ,
[firstname] [nvarchar] (100) collate chinese_prc_ci_as null ,
[lastname] [nvarchar] (100) collate chinese_prc_ci_as null ,
[country] [nvarchar] (50) collate chinese_prc_ci_as null ,
[note] [nvarchar] (2000) collate chinese_prc_ci_as null
) on [primary]
go
疑問:主鍵以id來表示,這樣如果id保持遞增不變翻頁沒有問題,但是并不是所有表都是這種樣子,只有一個(gè)遞增的id主鍵。再看其他人的翻頁,大同小異,都是以id 鍵并且是identity屬性來舉例,不知道這些同胞的表是不是都這么設(shè)計(jì)的?
假如按照有2個(gè)關(guān)鍵字,感覺以上翻頁全部不成立,是我白癡了?還是確實(shí)如此?
當(dāng)然有一種方法,可以把雙關(guān)鍵字的表插入到一張臨時(shí)表,臨時(shí)表以id做標(biāo)識(shí),根據(jù)前人經(jīng)驗(yàn),臨時(shí)表會(huì)耗費(fèi)大量io操作,速度奇慢無比,能不用,則不用。
那么雙關(guān)鍵字,甚至三關(guān)鍵字,到底以什么方式翻頁好呢?直接拼湊sql語句的話,會(huì)很麻煩很麻煩,并不是說不可以,能有人有一個(gè)通用的做法?
我希望我能解決這個(gè)問題,不過實(shí)在感覺是困難啊,w_w