資源描述:
《asp 知識(shí)從入門到精通,看完你就是網(wǎng)絡(luò)編程高手.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、ADO存取數(shù)據(jù)庫時(shí)的分頁顯示?如果你使用過目前眾多網(wǎng)站上的電子公告板程序的話,那你應(yīng)該會(huì)知道電子公告板程序?yàn)榱颂岣唔撁娴淖x取速度,一般不會(huì)將所有的帖子全部在一頁中羅列出來,而是將其分成多頁顯示,每頁顯示一定數(shù)目的帖子數(shù),譬如20條。想不想了解如何實(shí)現(xiàn)分頁顯示?請看本文! 《動(dòng)態(tài)網(wǎng)站設(shè)計(jì)十八般武藝--ASP篇》一文從第一期至今已和朋友們一起度過了大半個(gè)年頭,相信通過在這一段時(shí)間中的學(xué)習(xí)、實(shí)踐到再學(xué)習(xí)、再實(shí)踐,大家已經(jīng)能夠熟練運(yùn)用ASP的內(nèi)建對象、ActiveX組件去編寫一些基本的ASP應(yīng)用程序。從我收到的朋友們的來信中可以
2、明顯的感覺到,大家的ASP功力正不斷地提升。最近很多朋友來信希望我寫一些ASP在現(xiàn)實(shí)運(yùn)用中的實(shí)例。因此,從本期開始我決定將《動(dòng)態(tài)網(wǎng)站設(shè)計(jì)十八般武藝--ASP篇》的定位從介紹和學(xué)習(xí)ASP基礎(chǔ)知識(shí)轉(zhuǎn)向到ASP實(shí)際運(yùn)行的探討和深化。應(yīng)朋友們的要求,在本期中我將給大家著重談一談“ADO存取數(shù)據(jù)庫時(shí)如何分頁顯示”的問題?! ∈裁词茿DO存取數(shù)據(jù)庫時(shí)的分頁顯示?如果你使用過目前眾多網(wǎng)站上的電子公告板程序的話,那你應(yīng)該會(huì)知道電子公告板程序?yàn)榱颂岣唔撁娴淖x取速度,一般不會(huì)將所有的帖子全部在一頁中羅列出來,而是將其分成多頁顯示,每頁顯示一定
3、數(shù)目的帖子數(shù),譬如20條。這就是數(shù)據(jù)庫查詢的分頁顯示,如果你還不明白,去看看yahoo等搜索引擎的查詢結(jié)果就會(huì)明白了。 那么究竟如何才能做到將數(shù)據(jù)庫的查詢結(jié)果分頁顯示呢?其實(shí)方法有很多,但主要有兩種: 一、將數(shù)據(jù)庫中所有符合查詢條件的記錄一次性的都讀入recordset中,存放在內(nèi)存中,然后通過ADORecordset對象所提供的幾個(gè)專門支持分頁處理的屬性:PageSize(頁大小)、PageCount(頁數(shù)目)以及AbsolutePage(絕對頁)來管理分頁處理?! 《⒏鶕?jù)客戶的指示,每次分別從符合查詢條件的記錄中
4、將規(guī)定數(shù)目的記錄數(shù)讀取出來并顯示?! 烧叩闹饕顒e在于前者是一次性將所有記錄都讀入內(nèi)存然后再根據(jù)指示來依次做判斷分析從而達(dá)到分頁顯示的效果,而后者是先根據(jù)指示做出判斷并將規(guī)定數(shù)目的符合查詢條件的記錄讀入內(nèi)存,從而直接達(dá)到分頁顯示的功能?! ∥覀兛梢院苊黠@的感覺到,當(dāng)數(shù)據(jù)庫中的記錄數(shù)達(dá)到上萬或更多時(shí),第一種方法的執(zhí)行效率將明顯低于第二種方法,因?yàn)楫?dāng)每一個(gè)客戶查詢頁面時(shí)都要將所有符合條件的記娣旁詵衿髂詿嬤?,染忬哉V蟹忠車卻?,染J庇諧?100個(gè)的客戶在線查詢,那么ASP應(yīng)用程序的執(zhí)行效率將大受影響。但是,當(dāng)服務(wù)器上
5、數(shù)據(jù)庫的記錄數(shù)以及同時(shí)在線的人數(shù)并不是很多時(shí),兩者在執(zhí)行效率上是相差無幾的,此時(shí)一般就采用第一種方法,因?yàn)榈谝环N方法的ASP程序編寫相對第二種方法要簡單明了得多?! ≡谶@里作者就以我們常見的ASPBBS程序?yàn)槔瑏斫o大家分析一下如何在BBS程序里實(shí)現(xiàn)分頁顯示功能,由于我們一般使用的BBS程序的數(shù)據(jù)庫記錄數(shù)和同時(shí)訪問的人數(shù)都不會(huì)太多,所以以下程序?qū)嵗鞘褂玫南惹八榻B的第一種分頁顯示方法。 進(jìn)行ADO存取數(shù)據(jù)庫時(shí)的分頁顯示,其實(shí)就是對Recordset的記錄進(jìn)行操作。所以我們首先必須了解Reordset對象的屬性和方法:
6、 BOF屬性:目前指標(biāo)指到RecordSet的第一筆?! OF屬性:目前指標(biāo)指到RecordSet的最后一筆?! ove方法:移動(dòng)指標(biāo)到RecordSet中的某一條記錄。 AbsolutePage屬性:設(shè)定當(dāng)前記錄的位置是位于哪一頁AbsolutePosition屬性:目前指標(biāo)在RecordSet中的位置。 PageCount屬性:顯示Recordset對象包括多少“頁”的數(shù)據(jù)?! ageSize屬性:顯示Recordset對象每一頁顯示的記錄數(shù)?! ecordCount屬性:顯示Recordset對象記錄的總
7、數(shù)?! ∠旅孀屛覀儊碓敿?xì)認(rèn)識(shí)一下這些重要的屬性和方法 一、BOF與EOF屬性 通常我們在ASP程序中編寫代碼來檢驗(yàn)BOF與EOF屬性,從而得知目前指標(biāo)所指向的RecordSet的位置,使用BOF與EOF屬性,可以得知一個(gè)Recordset對象是否包含有記錄或者得知移動(dòng)記錄行是否已經(jīng)超出該Recordset對象的范圍。 如:$#@60;%ifnotrs.eofthen...%$#@62; $#@60;%ifnot(rs.bofandrs.eof)%$#@62; 若當(dāng)前記錄的位置是在一個(gè)Recordset對象第一行記
8、錄之前時(shí),BOF屬性返回true,反之則返回false。 若當(dāng)前記錄的位置是在一個(gè)Recordset對象最后一行記錄之后時(shí),EOF屬性返回true,反之則返回false?! OF與EOF都為False:表示指標(biāo)位于RecordSet的當(dāng)中?! OF為True:目前指標(biāo)指到RecordSet的第一筆