您的位置:首页精文荟萃软件资讯 → ASP技术在论坛中的运用二(吐血推荐!!!!)

ASP技术在论坛中的运用二(吐血推荐!!!!)

时间:2004/10/7 19:04:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



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

  这儿使用的是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的事了。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本