究竟如何才能做到將數(shù)據(jù)庫(kù)的查詢結(jié)果分頁(yè)顯示呢?其實(shí)方法有很多,但主要有兩種:
一、將數(shù)據(jù)庫(kù)中所有符合查詢條件的記錄一次性的都讀入 recordset 中,存放在內(nèi)存中,然后通過(guò) ADO Recordset 對(duì)象所提供的幾個(gè)專門支持分頁(yè)處理的屬性: PageSize( 頁(yè)大小 )、 PageCount( 頁(yè)數(shù)目 ) 以及 AbsolutePage( 絕對(duì)頁(yè) ) 來(lái)管理分頁(yè)處理。
二、根據(jù)客戶的指示,每次分別從符合查詢條件的記錄中將規(guī)定數(shù)目的記錄數(shù)讀取出來(lái)并顯示。
兩者的主要差別在于前者是一次性將所有記錄都讀入內(nèi)存然后再根據(jù)指示來(lái)依次做判斷分析從而達(dá)到分頁(yè)顯示的效果,而后者是先根據(jù)指示做出判斷并將規(guī)定數(shù)目的符合查詢條件的記錄讀入內(nèi)存,從而直接達(dá)到分頁(yè)顯示的功能。
我們可以很明顯的感覺(jué)到,當(dāng)數(shù)據(jù)庫(kù)中的記錄數(shù)達(dá)到上萬(wàn)或更多時(shí),第一種方法的執(zhí)行效率將明顯低于第二種方法,因?yàn)楫?dāng)每一個(gè)客戶查詢頁(yè)面時(shí)都要將所有符合條件的記錄存放在服務(wù)器內(nèi)存中,然后在進(jìn)行分頁(yè)等處理,如果同時(shí)有超過(guò) 100 個(gè)的客戶在線查詢,那么 ASP 應(yīng)用程序的執(zhí)行效率將大受影響。但是,當(dāng)服務(wù)器上數(shù)據(jù)庫(kù)的記錄數(shù)以及同時(shí)在線的人數(shù)并不是很多時(shí),兩者在執(zhí)行效率上是相差無(wú)幾的,此時(shí)一般就采用第一種方法,因?yàn)榈谝环N方法的 ASP 程序編寫相對(duì)第二種方法要簡(jiǎn)單明了得多。
在這里作者就以我們常見(jiàn)的 ASP BBS 程序?yàn)槔瑏?lái)給大家分析一下如何在 BBS 程序里實(shí)現(xiàn)分頁(yè)顯示功能,由于我們一般使用的 BBS 程序的數(shù)據(jù)庫(kù)記錄數(shù)和同時(shí)訪問(wèn)的人數(shù)都不會(huì)太多,所以以下程序?qū)嵗鞘褂玫南惹八榻B的第一種分頁(yè)顯示方法。
進(jìn)行 ADO 存取數(shù)據(jù)庫(kù)時(shí)的分頁(yè)顯示,其實(shí)就是對(duì) Recordset 的記錄進(jìn)行操作。所以我們首先必須了解 Reordset 對(duì)象的屬性和方法:
BOF 屬性:目前指標(biāo)指到 RecordSet 的第一筆。
EOF 屬性:目前指標(biāo)指到 RecordSet 的最后一筆。
Move 方法:移動(dòng)指標(biāo)到 RecordSet 中的某一條記錄。
AbsolutePage 屬性:設(shè)定當(dāng)前記錄的位置是位于哪一頁(yè) AbsolutePosition 屬性:目前指標(biāo)在 RecordSet 中的位置。
PageCount 屬性:顯示 Recordset 對(duì)象包括多少“頁(yè)”的數(shù)據(jù)。
PageSize 屬性:顯示 Recordset 對(duì)象每一頁(yè)顯示的記錄數(shù)。
RecordCount 屬性:顯示 Recordset 對(duì)象記錄的總數(shù)。
下面讓我們來(lái)詳細(xì)認(rèn)識(shí)一下這些重要的屬性和方法
一、 BOF 與 EOF 屬性
通常我們?cè)?ASP 程序中編寫代碼來(lái)檢驗(yàn) BOF 與 EOF 屬性,從而得知目前指標(biāo)所指向的 RecordSet 的位置,使用 BOF 與 EOF 屬性,可以得知一個(gè) Recordset 對(duì)象是否包含有記錄或者得知移動(dòng)記錄行是否已經(jīng)超出該 Recordset 對(duì)象的范圍。
新聞熱點(diǎn)
疑難解答
圖片精選