明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ASP技術(shù)在論壇中的使用(二)(吐血推薦!。。。

[摘要]對于論壇或者留言板,實(shí)現(xiàn)起來有一般兩種方法:用文件或者數(shù)據(jù)庫。相對而言,用數(shù)據(jù)庫要簡單高效一些,能夠?qū)φ搲M(jìn)行更好的控制,也能夠?qū)?shù)據(jù)提供一些驗(yàn)證和保護(hù)。   這兒使用的是ACCESS數(shù)據(jù)庫,對于一般的中小型的應(yīng)用,ACCESS應(yīng)該是能夠勝任的。   從上面的分析可以知...
對于論壇或者留言板,實(shí)現(xiàn)起來有一般兩種方法:用文件或者數(shù)據(jù)庫。相對而言,用數(shù)據(jù)庫要簡單高效一些,能夠?qū)φ搲M(jìn)行更好的控制,也能夠?qū)?shù)據(jù)提供一些驗(yàn)證和保護(hù)。

  這兒使用的是ACCESS數(shù)據(jù)庫,對于一般的中小型的應(yīng)用,ACCESS應(yīng)該是能夠勝任的。

  從上面的分析可以知道應(yīng)該有四個表,下面我給出每個表的結(jié)構(gòu)。

  

  作者表(存放作者信息):

  ID:文本類型,必填。是網(wǎng)友代號。

  密碼:文本類型,必填。

  昵稱:文本類型,必填。

  EMAIL:文本類型,必填。

   職務(wù):數(shù)字類型,必填。-1代表普通網(wǎng)友,0代表站長。大于0的數(shù)字代表斑竹,并且號碼是相應(yīng)的看板表中某個板的ID,表示是那個板的斑竹。

  文章數(shù):數(shù)字類型,必填。網(wǎng)友發(fā)表的文章總數(shù)。

  姓名:文本類型,可選。

  性別:文本類型,可選。

  電話:文本類型,可選。

  

  內(nèi)容表(存放具體文章內(nèi)容和相關(guān)信息):

  ID:自動編號,并為其設(shè)置索引,以加快搜索的速度。

   看板ID:數(shù)字類型,來自看板列表,表示文章所屬看板。

   主題ID:數(shù)字類型,來自主題表,表示文章所屬主題。

   作者ID:文本類型,來自作者表,表示文章的作者。

   日期:日期/時間類型,預(yù)置初值為函數(shù)NOW(),系統(tǒng)在添加這一條字段時,將自動取系統(tǒng)當(dāng)前時間為其值。

  標(biāo)題:文本類型。文章的標(biāo)題。

  發(fā)表:是/否類型,為“真”時表示文章已經(jīng)通過審閱,可以發(fā)表;為“否”表示文章尚待審閱。

  推薦度:數(shù)字類型,文章的推薦程度。

  內(nèi)容:備注類型,文章的具體內(nèi)容。

  點(diǎn)擊次數(shù):數(shù)字類型,文章的點(diǎn)擊次數(shù)。

  

  看板列表(存放有關(guān)看板的信息):

  ID:自動編號,同樣的,也為其設(shè)置了索引。

  名稱:文本類型,看板的名稱。

  板主:文本類型,看板斑竹的ID。

  主題數(shù):數(shù)字類型,看板中包含的主題數(shù)。

  

  主題表(存放有關(guān)主題的信息):

  ID:自動編號,并為其設(shè)置索引。

  標(biāo)題:文本類型,表示主題名。

  看板:數(shù)字類型,來自看板列表,表示主題所屬的看板。

  文章數(shù):數(shù)字類型,主題中包含的文章數(shù)。

  

   所有的表是設(shè)計(jì)完了,但是數(shù)據(jù)庫的設(shè)計(jì)并沒有完。我們還需要建立表間關(guān)系,這樣就能夠讓數(shù)據(jù)庫執(zhí)行一些相關(guān)性檢查,避免數(shù)據(jù)出錯。建立表間關(guān)系的另外的一個好處,就是通過它能夠很容易的創(chuàng)建出復(fù)雜的JOIN查詢。

  在上面的表中,可以很容易的看到這些表間關(guān)系。從下圖中可以看到這些關(guān)系是如何聯(lián)系各個表的。


  

  通常我們在ASP中操作數(shù)據(jù)庫的時候,都是使用的運(yùn)行時生成的查詢,然后由傳遞給數(shù)據(jù)庫解釋執(zhí)行。而在這兒我們要用的是存貯查詢。與運(yùn)行時查詢比較而言,存貯查詢具有更多的優(yōu)點(diǎn)。

   它保存在數(shù)據(jù)庫中,獨(dú)立于ASP代碼,使得他更容易建立和修改,并且查詢的效率更高,速度更快,可以調(diào)試好了以后再放在ASP頁面中調(diào)用,能避免很多問題。而且使用存貯查詢的ASP代碼更加容易閱讀和修改?赡艽蠹叶紝υ贏SP中調(diào)用SQL查詢感到很煩,特別是那些逗號啊,分號阿什么的,一不小心就會出錯。使用存貯查詢后,就可以不用顧慮這些問題了。當(dāng)然,存貯查詢再使用上也有一些要注意的地方,在后面我會詳細(xì)的講解它的使用方法。

   在ACCESS中創(chuàng)建存貯查詢是一件很容易的事,這兒我就不再多說了。如果確有不知道的,請參看《使用存貯查詢》一文,在這兒我只給出各個查詢的SQL語句代碼。

  我把所有要使用到的查詢都作為存貯查詢保存在了數(shù)據(jù)庫中,主要的有以下的一些:

  安ID查詢文章:

  SELECT 主題表.標(biāo)題 AS 主題名, 看板列表.名稱 AS 看板名, 內(nèi)容表.*

   FROM 主題表 INNER JOIN (內(nèi)容表 INNER JOIN 看板列表 ON 內(nèi)容表.看板ID = 看板列表.ID) ON 主題表.ID = 內(nèi)容表.主題ID

   WHERE (((內(nèi)容表.ID)=[articleid]));

  斑竹密碼查詢:

  SELECT 看板列表.板主, 作者表.密碼

  FROM 作者表 INNER JOIN 看板列表 ON 作者表.ID = 看板列表.板主

  WHERE (((看板列表.ID)=[id];

  查詢作者:

  SELECT 作者表.*

   FROM 作者表

  WHERE (((作者表.ID)=[id]));

  發(fā)表文章列表:

  SELECT [內(nèi)容表].[ID], [內(nèi)容表].[標(biāo)題], [內(nèi)容表].[作者ID] AS 作者, [內(nèi)容表].[日期], [內(nèi)容表].[推薦度], [內(nèi)容表].[點(diǎn)擊次數(shù)] AS 點(diǎn)擊數(shù)

  FROM 內(nèi)容表

  WHERE ((([內(nèi)容表].[主題ID])=[TopicIndex]) And (([內(nèi)容表].[發(fā)表])=True));

  未發(fā)表文章列表:

  SELECT 內(nèi)容表.ID AS 文章id, 主題表.ID AS 主題id, 主題表.標(biāo)題 AS 主題, 內(nèi)容表.標(biāo)題 AS 標(biāo)題, 內(nèi)容表.作者ID AS 作者, 內(nèi)容表.日期 AS 日期

  FROM 主題表 INNER JOIN 內(nèi)容表 ON 主題表.ID = 內(nèi)容表.主題ID

   WHERE (((內(nèi)容表.發(fā)表)=False) AND ((內(nèi)容表.看板ID)=[boardid]));

  主題列表:

  SELECT 主題表.*, 看板列表.名稱 AS 看板名

  FROM 看板列表 INNER JOIN 主題表 ON 看板列表.ID = 主題表.看板

  WHERE (((主題表.看板)=[boardIndex]));

  還有一些查詢,因?yàn)榇蠖嘞嘟,我就不一一列出了?br>
  在上面的查詢語句中,可以看到一些由”[“和“]”包圍起來的東西,那就是查詢參數(shù)了。需要在運(yùn)行時給出參數(shù)值,然后把參數(shù)值帶入到查詢語句中才能夠運(yùn)行。還有一點(diǎn)要注意的是:在創(chuàng)建那些INNER JOIN查詢時,是需要把表間關(guān)系添加到設(shè)計(jì)視圖中的,否則是不能夠自動生成INNER JOIN查詢語句的。

   到這兒,數(shù)據(jù)庫的設(shè)計(jì)就算完了,以后的工作就是ASP的事了。