IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 实用查询 | 网络电台 | 成语 | 歇后语 | 网址 | 下载 | 周公解梦 | 生日密码 | 电视剧365 | Flash
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> ASP技术

ASP技术在论坛中的运用(二)

【 来源:CSDN  更新时间:2004-9-16 | 字体:
对于论坛或者留言板,实现起来有一般两种方法:用文件或者数据库。相对而言,用数据库要简单高效一些,能够对论坛进行更好的控制,也能够对数据提供一些验证和保护。

  这儿使用的是ACCESS数据库,对于一般的中小型的应用,ACCESS应该是能够胜任的。

  从上面的分析可以知道应该有四个表,下面我给出每个表的结构。
  

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

  ID:文本类型,必填。是网友代号。

  密码:文本类型,必填。

  昵称:文本类型,必填。

  EMAIL:文本类型,必填。

   职务:数字类型,必填。-1代表普通网友,0代表站长。大于0的数字代表斑竹,并且号码是相应的看板表中某个板的ID,表示是那个板的斑竹。

  文章数:数字类型,必填。网友发表的文章总数。

  姓名:文本类型,可选。

  性别:文本类型,可选。

  电话:文本类型,可选。

  

  内容表(存放具体文章内容和相关信息):

  ID:自动编号,并为其设置索引,以加快搜索的速度。

   看板ID:数字类型,来自看板列表,表示文章所属看板。

   主题ID:数字类型,来自主题表,表示文章所属主题。

   作者ID:文本类型,来自作者表,表示文章的作者。

   日期:日期/时间类型,预置初值为函数NOW(),系统在添加这一条字段时,将自动取系统当前时间为其值。

  标题:文本类型。文章的标题。

  发表:是/否类型,为“真”时表示文章已经通过审阅,可以发表;为“否”表示文章尚待审阅。

  推荐度:数字类型,文章的推荐程度。

  内容:备注类型,文章的具体内容。

  点击次数:数字类型,文章的点击次数。

  

  看板列表(存放有关看板的信息):

  ID:自动编号,同样的,也为其设置了索引。

  名称:文本类型,看板的名称。

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

  主题数:数字类型,看板中包含的主题数。

  

  主题表(存放有关主题的信息):

  ID:自动编号,并为其设置索引。

  标题:文本类型,表示主题名。

  看板:数字类型,来自看板列表,表示主题所属的看板。

  文章数:数字类型,主题中包含的文章数。

  

   所有的表是设计完了,但是数据库的设计并没有完。我们还需要建立表间关系,这样就能够让数据库执行一些相关性检查,避免数据出错。建立表间关系的另外的一个好处,就是通过它能够很容易的创建出复杂的JOIN查询。

  在上面的表中,可以很容易的看到这些表间关系。从下图中可以看到这些关系是如何联系各个表的。


  

  通常我们在ASP中操作数据库的时候,都是使用的运行时生成的查询,然后由传递给数据库解释执行。而在这儿我们要用的是存贮查询。与运行时查询比较而言,存贮查询具有更多的优点。

   它保存在数据库中,独立于ASP代码,使得他更容易建立和修改,并且查询的效率更高,速度更快,可以调试好了以后再放在ASP页面中调用,能避免很多问题。而且使用存贮查询的ASP代码更加容易阅读和修改。可能大家都对在ASP中调用SQL查询感到很烦,特别是那些逗号啊,分号阿什么的,一不小心就会出错。使用存贮查询后,就可以不用顾虑这些问题了。当然,存贮查询再使用上也有一些要注意的地方,在后面我会详细的讲解它的使用方法。

   在ACCESS中创建存贮查询是一件很容易的事,这儿我就不再多说了。如果确有不知道的,请参看《使用存贮查询》一文,在这儿我只给出各个查询的SQL语句代码。

  我把所有要使用到的查询都作为存贮查询保存在了数据库中,主要的有以下的一些:

  安ID查询文章:

  SELECT 主题表.标题 AS 主题名, 看板列表.名称 AS 看板名, 内容表.*

   FROM 主题表 INNER JOIN (内容表 INNER JOIN 看板列表 ON 内容表.看板ID = 看板列表.ID) ON 主题表.ID = 内容表.主题ID

   WHERE (((内容表.ID)=[articleid]));

  斑竹密码查询:

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

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

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

  查询作者:

  SELECT 作者表.*

   FROM 作者表

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

  发表文章列表:

  SELECT [内容表].[ID], [内容表].[标题], [内容表].[作者ID] AS 作者, [内容表].[日期], [内容表].[推荐度], [内容表].[点击次数] AS 点击数

  FROM 内容表

  WHERE ((([内容表].[主题ID])=[TopicIndex]) And (([内容表].[发表])=True));

  未发表文章列表:

  SELECT 内容表.ID AS 文章id, 主题表.ID AS 主题id, 主题表.标题 AS 主题, 内容表.标题 AS 标题, 内容表.作者ID AS 作者, 内容表.日期 AS 日期

  FROM 主题表 INNER JOIN 内容表 ON 主题表.ID = 内容表.主题ID

   WHERE (((内容表.发表)=False) AND ((内容表.看板ID)=[boardid]));

  主题列表:

  SELECT 主题表.*, 看板列表.名称 AS 看板名

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

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

  还有一些查询,因为大多相近,我就不一一列出了。

  在上面的查询语句中,可以看到一些由”[“和“]”包围起来的东西,那就是查询参数了。需要在运行时给出参数值,然后把参数值带入到查询语句中才能够运行。还有一点要注意的是:在创建那些INNER JOIN查询时,是需要把表间关系添加到设计视图中的,否则是不能够自动生成INNER JOIN查询语句的。

   到这儿,数据库的设计就算完了,以后的工作就是ASP的事了。
相 关 文 章
相 关 软 件
逃生 放生 黄玫瑰 想太多 那滋味 擦肩而过 放手去爱 北京欢迎你 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 千山万水 改变自己 一定要爱你 等爱的玫瑰 陷入爱里面 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 坏女人 日不落 樱花草 为你写诗 独家记忆 夏天的味道 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 地球人都知道我爱你
假如 相思 是非题 有缘人 舍不得 我的答铃 死而无憾 外滩十八号 越爱越难过 123木头人 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2008 ★IT学习者★ ALL RIGHTS RESERVED.