究竟如何才能做到將數據庫的查詢結果分頁顯示呢?其實方法有很多,但主要有兩種:
一、將數據庫中所有符合查詢條件的記錄一次性的都讀入 recordset 中,存放在內存中,然后通過 ADO Recordset 對象所提供的幾個專門支持分頁處理的屬性: PageSize( 頁大小 )、 PageCount( 頁數目 ) 以及 AbsolutePage( 絕對頁 ) 來管理分頁處理。
二、根據客戶的指示,每次分別從符合查詢條件的記錄中將規定數目的記錄數讀取出來并顯示。
兩者的主要差別在于前者是一次性將所有記錄都讀入內存然后再根據指示來依次做判斷分析從而達到分頁顯示的效果,而后者是先根據指示做出判斷并將規定數目的符合查詢條件的記錄讀入內存,從而直接達到分頁顯示的功能。
我們可以很明顯的感覺到,當數據庫中的記錄數達到上萬或更多時,第一種方法的執行效率將明顯低于第二種方法,因為當每一個客戶查詢頁面時都要將所有符合條件的記錄存放在服務器內存中,然后在進行分頁等處理,如果同時有超過 100 個的客戶在線查詢,那么 ASP 應用程序的執行效率將大受影響。但是,當服務器上數據庫的記錄數以及同時在線的人數并不是很多時,兩者在執行效率上是相差無幾的,此時一般就采用第一種方法,因為第一種方法的 ASP 程序編寫相對第二種方法要簡單明了得多。
在這里作者就以我們常見的 ASP BBS 程序為例,來給大家分析一下如何在 BBS 程序里實現分頁顯示功能,由于我們一般使用的 BBS 程序的數據庫記錄數和同時訪問的人數都不會太多,所以以下程序實例是使用的先前所介紹的第一種分頁顯示方法。
進行 ADO 存取數據庫時的分頁顯示,其實就是對 Recordset 的記錄進行操作。所以我們首先必須了解 Reordset 對象的屬性和方法:
BOF 屬性:目前指標指到 RecordSet 的第一筆。
EOF 屬性:目前指標指到 RecordSet 的最后一筆。
Move 方法:移動指標到 RecordSet 中的某一條記錄。
AbsolutePage 屬性:設定當前記錄的位置是位于哪一頁 AbsolutePosition 屬性:目前指標在 RecordSet 中的位置。
PageCount 屬性:顯示 Recordset 對象包括多少“頁”的數據。
PageSize 屬性:顯示 Recordset 對象每一頁顯示的記錄數。
RecordCount 屬性:顯示 Recordset 對象記錄的總數。
下面讓我們來詳細認識一下這些重要的屬性和方法
一、 BOF 與 EOF 屬性
通常我們在 ASP 程序中編寫代碼來檢驗 BOF 與 EOF 屬性,從而得知目前指標所指向的 RecordSet 的位置,使用 BOF 與 EOF 屬性,可以得知一個 Recordset 對象是否包含有記錄或者得知移動記錄行是否已經超出該 Recordset 對象的范圍。
新聞熱點
疑難解答