“添加这个功能,http://www.cnblogs.com/insus/archive/2013/05/30/3107681.html 嗯,基本上符合预期的要求,不过,你还得要为网站每一篇文章的点击做统计。”
看到这个要求,你也许也会首先想起,去数据库的存储文章的表中,再添加一个字段,如[Hits],写一个存储过程来更些此字段。
CREATE PROCEDURE [dbo].[usp_Article_UpdateHit] ( @Article_nbr INT ) AS UPDATE [dbo].[Article] SET [Hits] = [Hits] + 1 WHERE [Article_nbr] = @Article_nbr
然后去网站的浏览文章的页面,在Page_Load事件中,执行刚才写好的存储过程。
基本上这个意思。
不过,Insus.NET不是跟上这样想的。最始码是实现一个功能,不想修改太多地方,前端网页也不想改,存储文章的表也不想去改它。
不会吧? 是的,Insus.NET就是这样想的。
文章的访问统计怎样实现?下面是Insus.NET的方法:
重新创建一张表,大约这样子:
CREATE TABLE [dbo].[Article_Visit_Info] ( [avi_nbr] INT IDENTITY(1,1) PRIMARY KEY NOT NULL, [Article_nbr] INT NOT NULL FOREIGN KEY REFERENCES [dbo].[Article] ([Article_nbr]), [Visit_Date] DATETIME NOT NULL DEFAULT(CURRENT_TIMESTAMP) )
创建好表之后,再创建一个存储过程,是用来存储当有文章点击访问时,插一笔记录入刚才的表中:
CREATE PROCEDURE [dbo].[usp_Article_Visit_Info_Update] ( @Article_nbr INT ) AS INSERT INTO [dbo].[Article_Visit_Info] ([Article_nbr]) VALUES (@Article_nbr)
写到这里,你会问题,Insus.NET你是怎样知道文章被点击访问的? 问得及时,Insus.NET下面就是要解决这个的。由于原来写好的程序,获取每一篇文章,均是By PrimaryKey 来读取,也就是以主键作为参数获取,因此Insus.NET只是在数据库修改一下这个存储过程即可,添加高亮部分的SQL语句,就把用户的要求完成了。
当然有了这个表的信息,我们就可以统计出每篇文章的点击访问量,还可以每天,每星期,每月,每季度或是每年的访问量进行统计。具体还要看客户的要求了。