【正文】
語(yǔ)法;使用 ADO 組件的 RecordSet。 Set objDBConn=() 建立一個(gè) connection 對(duì)象的實(shí)例變量,然后才能在它的基礎(chǔ)上建立recordset 對(duì)象或是 mand 對(duì)象來(lái)操作數(shù)據(jù)庫(kù)。在 ASP的數(shù)據(jù)庫(kù)編程中, connection 對(duì)象是我們不可能離開的一個(gè)對(duì)象,在對(duì)數(shù)據(jù)庫(kù)進(jìn)行任何的操作,比如更新記錄,插入,刪除,檢索等,都必須借助于 connection 對(duì)象來(lái)完成。所以,從安全性和代碼執(zhí)行效率方面考慮,我們將讀與寫數(shù)據(jù) 庫(kù)連接插入文件分別開來(lái),分別命名為 []和[]。至于為什么需要設(shè)置 Mode 屬性?設(shè)置 Mode 屬性可以節(jié)省 ADO 組件的處理時(shí)間。bid=XXX 重新以匿名身分登錄 帖子管理 張貼公告 友情鏈接管理 ?bid=XXX 論壇基本設(shè)定 版面管理 21 ASP網(wǎng)頁(yè)數(shù)據(jù)庫(kù)的連接 所有要進(jìn)行數(shù)據(jù)庫(kù)存取的 ASP 網(wǎng)頁(yè)都要以 DSNless 方式進(jìn)行數(shù)據(jù)庫(kù)連接,由此我們可以將執(zhí)行數(shù)據(jù)庫(kù)連接的 ASP 代碼單獨(dú)形成一個(gè)插入文件,通常插入文件都是以 [.inc]作為擴(kuò)展名,考慮到安全性的需要, 防止用戶直接輸入文件名下載此插入文件,所以我們?nèi)匀灰?[.asp]作為插入文件的擴(kuò)展名,比如,我們將一個(gè)用作數(shù)據(jù)讀操作的數(shù)據(jù)庫(kù)連接插入文件名命名為 [],代碼 如附錄 。 帖子 序號(hào)為此 帖子 唯一標(biāo)志。 帖子 帖子 包含以下一些基本屬性:所屬版面,作者,標(biāo)題, 帖子 類型,所屬主貼,回復(fù)數(shù)量,點(diǎn)擊次數(shù),標(biāo)題圖像, 帖子 內(nèi)容, 帖子 書寫時(shí)間,最后一次更新 帖子 14 時(shí)間。 版面 論壇版面包含這樣一些基本屬性:中文名稱、英文名稱、版面簡(jiǎn)介、版面公告。另外,管理員也分為兩類,一類是超級(jí)管理員,具有管理和維護(hù)本論壇所有數(shù)據(jù)信息的權(quán)限,另一類是普通版主,只能管理與某版面相關(guān)的數(shù)據(jù)信息,可以用申請(qǐng)管理版面以及申請(qǐng)被批準(zhǔn)狀態(tài)來(lái)區(qū)分這兩類管理員,如果申請(qǐng)管理版面為零用申請(qǐng)被批準(zhǔn)通過(guò),則此會(huì)員就為超級(jí)管理員,如果申請(qǐng)管理版面在本論壇存在且申請(qǐng)被批準(zhǔn)通過(guò),則此會(huì)員就為版主管理員,否則,此會(huì)員仍為普通會(huì)員。 管理員 管理員實(shí)際上派生于會(huì)員用戶,意味著只有會(huì)員用戶才有資格申請(qǐng)本論壇各版面的管理權(quán)限,因此,他除了包含會(huì)員用戶所有的基本屬性以外,還應(yīng)包含以下幾個(gè)屬性:申請(qǐng)管理版面、申請(qǐng)理由、申請(qǐng)被批準(zhǔn)狀態(tài)。其中,用戶名為用戶唯一標(biāo)志,不允許重名。 13 系統(tǒng)的數(shù)據(jù)要求 根據(jù)系統(tǒng)的功能需求,本系統(tǒng)管理和維護(hù)以下幾種數(shù)據(jù)元素(實(shí)體 Entity) :會(huì)員、管理員、論壇、論壇版面、 帖子 、友情鏈接、日志。 版主會(huì)員功能要求 通用功能: 帖子 管理、張貼公告、友情鏈接管理 超級(jí)用戶功能要求 通用功能:論壇基本設(shè)定、版面管理、版主會(huì) 員管理、普通會(huì)員管理 系統(tǒng)性能要求 對(duì)于 帖子 查看、發(fā)表 帖子 以及回復(fù) 帖子 這類頻繁發(fā)生的系統(tǒng)操作,要采取適當(dāng)?shù)募夹g(shù)優(yōu)化這類數(shù)據(jù)操作,以提高數(shù)據(jù)存取效率。 匿名用戶功能要求 通用功能:查看各版面文章、查看系統(tǒng)版主列表、查看系統(tǒng)會(huì)員列表;私有功能:注冊(cè)為系統(tǒng)正式會(huì)員、會(huì)員找回遺失密碼、登錄為正式會(huì)員。高級(jí) 別的用戶可以繼承低級(jí)別用戶的公用功能。它由大約 30 條命令構(gòu)成,但實(shí)際只需要少數(shù)的幾個(gè)命令就可以完成相當(dāng)多的工作,常用的 SQL查詢命令有:Select、 Insert、 Delete、 Update 等。 SQL標(biāo)準(zhǔn)的確定使大多數(shù)數(shù)據(jù)庫(kù)廠家紛紛采用 SQL 語(yǔ)言作為其數(shù)據(jù)庫(kù)檢 索語(yǔ)言。 DBQ=c:\” 結(jié)構(gòu)查詢語(yǔ)言( SQL) SQL 是結(jié)構(gòu)查詢語(yǔ)言 (Structure Query Language)的英文縮寫,它是使用關(guān)系模型數(shù)據(jù)庫(kù)的應(yīng)用語(yǔ)言,由 IBM 在七十年代開發(fā)出來(lái)的,實(shí)現(xiàn)了關(guān)系型數(shù)據(jù)庫(kù)中的信息檢索。pwd=xxx” DSNless 數(shù)據(jù)源方式:使用本方式連接數(shù)據(jù)庫(kù),就必須自行提供 DSN 數(shù)據(jù)的相關(guān)信息,最重要的是驅(qū)動(dòng)程序。使用 DSN 數(shù)據(jù)源方式,用戶必須以手工的方 11 式進(jìn)行 ODBC 配置,添加一個(gè)指向用戶數(shù)據(jù)庫(kù)的系統(tǒng)數(shù)據(jù)源 DSN, ASP網(wǎng)頁(yè)使用 DSN數(shù)據(jù)源字符串連接至用戶數(shù)據(jù)庫(kù),例如: strDBDSN=”DSN=DSN 名稱 。 ODBC 規(guī)范為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基本于動(dòng)態(tài)鏈接庫(kù)的運(yùn)行支持環(huán)境。 DSN 數(shù)據(jù)源方式: ASP 網(wǎng)頁(yè)通過(guò)標(biāo)準(zhǔn)的 ODBC( Open DataBase Connectivity)數(shù)據(jù)源 DSN( Data Source Name)接口訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)。 Microsoft Access 是理想的入門級(jí)產(chǎn)品, 它 提供 了大量的向?qū)В梢暂o助完成數(shù)據(jù)庫(kù)的創(chuàng)建和管理。 Micro SQL Server 是一種功能齊全的客戶機(jī) /服務(wù)器數(shù)據(jù)庫(kù)產(chǎn)品,適用于系統(tǒng)經(jīng)常被大量的用戶查詢的情況。因此關(guān)系型數(shù)據(jù)庫(kù)可以減小數(shù)據(jù)庫(kù)的體積,這對(duì)于大型的數(shù)據(jù)庫(kù)來(lái)說(shuō)具有非常重要的意義。把它們叫做“關(guān)系型”數(shù)據(jù)庫(kù),是因?yàn)樾枰谶@些數(shù)據(jù)表格的字段之間建立特定的鏈接關(guān)系。對(duì)于一個(gè)簡(jiǎn)單的“平面文件”的 數(shù)據(jù)庫(kù)來(lái)說(shuō),它僅包含了一個(gè)數(shù)據(jù)表格,而對(duì)一個(gè)“關(guān)系型”數(shù)據(jù)庫(kù)來(lái)說(shuō),它卻包含兩個(gè)或兩個(gè)以上的數(shù)據(jù)表格,表格的各字段之間存在這一種或多種關(guān)系(有時(shí)可以把這種關(guān)系叫做“鏈接”)。每一條記錄都是由一系列的字段 (Field)組成的。 ADO 的七個(gè)對(duì)象及四個(gè)數(shù)據(jù)集合相互的關(guān)系圖如下: ActiveX Data Object 關(guān)系圖如 圖 1所示 : 圖 1 ActiveX Data Object 關(guān)系圖 C on ne c t i on對(duì)象R e c or ds e t對(duì)象Exe c ut e 操作方法A c t i v e C on ne c t i on 屬性Er r or對(duì)象P a r a m e t e r對(duì)象C om m a nd對(duì)象F i e l d對(duì)象Er r or s數(shù)據(jù)集合P a r a m e t e r s數(shù)據(jù)集合A c t i v e C on ne c t i on 屬性S ou r c e 屬性Exe c ut e 操作方法F i e l ds數(shù)據(jù)對(duì)象 10 MS Access 數(shù)據(jù)庫(kù) [9] 數(shù)據(jù)庫(kù)( Database)是一系列信息資源的集合。 3. RecordSet 對(duì)象包含 Fields 數(shù)據(jù)集合,在 Fields 數(shù)據(jù)集合中包含RecordSet 對(duì)象的所有 Field 數(shù)據(jù)字段對(duì)象。 9 ADO 提供的四個(gè)數(shù)據(jù)集合: [5] 1. Connection 對(duì)象包含 Errors 數(shù)據(jù)集合,在 Errors 數(shù)據(jù)集合中包含 數(shù)據(jù)源響應(yīng)失敗時(shí)所建立的 Error 對(duì)象。 6. Property 對(duì)象表示 ADO 的各項(xiàng)對(duì)象屬性值,換而言之,每個(gè) ADO 對(duì)象都會(huì)有一組描述和控制對(duì)象行的屬性。 4. RecordSet 對(duì)象負(fù)責(zé)瀏覽和操作從數(shù)據(jù)庫(kù)取出的數(shù)據(jù),換而言之,RecordSet 對(duì)象就 像 是一個(gè) 二維的數(shù)組,數(shù)組的每一行表示一個(gè)數(shù)據(jù)記錄,而每個(gè)數(shù)劇列包含一個(gè)或多個(gè)數(shù)據(jù)字段,即 Field 對(duì)象。除此之外,也可以通過(guò) Command 對(duì)象對(duì)數(shù)據(jù)庫(kù)發(fā)出數(shù)據(jù)定義語(yǔ)言 (DDL,Data Definition Language),例如 CREATE TABLE(建立數(shù)據(jù)表 )、 DROP TABLE(刪除數(shù)據(jù)表 )或 ALTER TABLE(修改數(shù)據(jù)表結(jié)構(gòu) )等。 2. Command 對(duì)象負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)提供請(qǐng)求,也就是傳遞指定的 SQL 命令。 ADO 主要是由 Connection對(duì)象、 Command 對(duì)象、 Parameter 對(duì)象、 Recordset 對(duì)象、 Field 對(duì)象、 Property對(duì)象及 Error 對(duì)象等七個(gè)對(duì)象與 Fields 數(shù)據(jù)集合、 Properties 數(shù)據(jù)集合、Parameters 數(shù)據(jù)集合及 Errors 數(shù)據(jù)集合等四個(gè)數(shù)據(jù)集合所組合而成,其功能概述如下。必須說(shuō)明,Session 對(duì)象只能適用于具備 Cookie 功能的瀏覽器。必須通過(guò) Session 對(duì)象記錄用戶的相關(guān)信息,以供用戶再次對(duì)此 Web 服務(wù)器提出要求時(shí)作確認(rèn),例如,在某些特定的網(wǎng)頁(yè)中,常需要用戶 輸入確認(rèn)的賬號(hào)和密碼,假如這些身份確認(rèn)的結(jié)果無(wú)法保留,那豈不是每一個(gè)網(wǎng)頁(yè)都需要重新輸入一次密碼。如果希望此對(duì)象實(shí)例可以跨多個(gè) ASP 網(wǎng)頁(yè),就要用到 Session 對(duì)象保留該組件實(shí)例,直到Session 對(duì)象的運(yùn)行時(shí)間到了,或是在其他 ASP 網(wǎng)頁(yè)調(diào)用 Session 對(duì)象的 Abandon方法,此組件實(shí)例才會(huì)被釋放。在 ASP 中負(fù)責(zé)將信息傳達(dá)到用戶的對(duì)象就是 Response 對(duì)象。換而言之, Request 對(duì)象通常包含了用戶端的相關(guān)信息,如瀏覽器的種類、表頭信息、表單參數(shù)及 cookies 等等。 Request對(duì)象,我們知道 HTTP通訊協(xié)議是一種請(qǐng)求與響應(yīng) (Request/Response)的通訊協(xié)議,因此通常由客戶端向 Web 服務(wù)器提出請(qǐng)求, Web 服務(wù)器才會(huì)響應(yīng)信息。 5. ASP 可以將運(yùn)行結(jié)果以 HTML 的格式傳送至客戶端瀏覽器,因此 ASP 可以適用于各種瀏覽器。 3. ASP 以對(duì)象為基礎(chǔ),因此可以使用 ActiveX 控件繼續(xù)擴(kuò)充其功能。 其特點(diǎn)歸納如下: 1. ASP 可以和 HTML 或其他腳本語(yǔ)言 (VB Script 與 Java Script)互相嵌套。與之相應(yīng),此類系統(tǒng)通常應(yīng)具有以下功能:用戶注冊(cè)、用戶登錄、發(fā)表文章、閱讀文章、回復(fù)文章、分頁(yè)查找、主題查找、作者查找、個(gè)人資料維護(hù)、找回密碼、版面管理、版主管理、用戶管理、友情鏈接管理等等,所有操作都可以由用戶在客戶端瀏覽器中完成,而服務(wù)器端程序會(huì)按用戶的要求來(lái)完成對(duì)系統(tǒng)數(shù)據(jù)的操作,并將結(jié)果傳給 Web服務(wù)器,再由 Web 服務(wù)器處理成 HTML 文件后發(fā)送到客戶端瀏覽器。 完成 Web 服務(wù)器端的用戶管理、帖子管理、版面管理、數(shù)據(jù)庫(kù)管理、瀏覽和查找、短消息功能等設(shè)計(jì)、實(shí)現(xiàn)與完善以及整個(gè)實(shí)驗(yàn)網(wǎng)站的組織建立和測(cè)試工作 此系統(tǒng) 有以下四種類型的操作用戶:匿名用戶、普通用戶、版面管理員、超級(jí)管理員。用戶驗(yàn)證信息,收集到的用戶點(diǎn)擊信息,主題層次信息,分析得出的關(guān)聯(lián)規(guī)則表等大量的數(shù)據(jù)都由數(shù)據(jù)庫(kù)管理 系統(tǒng)管理。采用 3Tier 軟件結(jié)構(gòu):表示層采用 HTML、JavaScript 或 VBScript 結(jié)合 CSS、 ActiveX 技術(shù)來(lái)編寫;事務(wù)邏輯層,考慮到本系統(tǒng)為通用 BBS 系統(tǒng),系統(tǒng)應(yīng)該具備較大的可伸縮性,應(yīng)該能適應(yīng)最基本應(yīng)用最廣泛的 WEB 平臺(tái),特別是個(gè)人用戶想在一些免費(fèi)主頁(yè)空間搭建 自己 的論壇,而這類免費(fèi)主頁(yè)空間通常只支持 ASP 來(lái)處理服務(wù)器端數(shù)據(jù)或數(shù)據(jù)庫(kù),另外,通用系統(tǒng)應(yīng) 該具備較大的可擴(kuò)展性,目前, 技術(shù)發(fā)展較快,未來(lái)應(yīng)該能以較小的成本用 重寫本系統(tǒng),因此,本系統(tǒng)事務(wù)邏輯層設(shè)計(jì)采用 ASP 網(wǎng)頁(yè);至于數(shù)據(jù)層,本系統(tǒng)采用最基本的 MS Access 數(shù)據(jù)庫(kù)系統(tǒng),視需要,系統(tǒng)作較小的改動(dòng)就可以移植到其它大型數(shù)據(jù)庫(kù)系統(tǒng) 5 本文討論的是一個(gè)基于 Web 的通用 BBS 網(wǎng)站,它