文档章节

C#实现文章评论功能

蔬菜kiki
 蔬菜kiki
发布于 2017/08/29 14:41
字数 475
阅读 8
收藏 0
点赞 0
评论 0

思路步骤如下:

1、获取文章id,如:string id = Request.QueryString["id"].ToString();

2、识别用户名session是否有效,如失效或者未登录状态,先登录,之后读取用户信息;

3、插入评论(字段为:评论id,评论内容,评论时间,用户名,文章id);

4、读取评论。

代码如下:

public partial class ArtShow : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            string id = Request.QueryString["id"].ToString();
            int intID = 0;
            try
            {
                intID = int.Parse(id);
            }
            catch
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("编号错误!"));
                Response.Write("<script language='javascript'>window.close();</script>");
                return;
            }
            ReadData(intID);
            ReadComment(intID);

        }
    }

    //留言提交
    protected void btnTJ_Click(object sender, EventArgs e)
    {
        noLogin.Text = "";//初始化标签
        if (Session["UserId"] == null || Session["UserId"].ToString().Equals(""))
        {
            noLogin.Text = "<font>您尚未登录或登录超时,请重新登录。</font>";
        }
        else
        {
            string Comment_con = srContent.Text.Trim();
            if (Comment_con.Equals(""))
            {
                //留言信息为空,在此处操作前台提示
                noLogin.Text = "<br><font>留言信息不能为空!</font>";
                return;
            }
            //查询用户信息
            long userid = Convert.ToInt64(Session["UserId"].ToString());
            string username = "";
            string name = "";
            string branchNum = "";
            string strGetUserInfo = "select top 1 USER_NAME,NAME from USER_INFO where USER_ID=@USER_ID";
            DataBase dataGetUserInfo = new DataBase();
            SqlParameter[] Dpa ={
                                    dataGetUserInfo.MakeInParam("@USER_ID",SqlDbType.BigInt,8,userid)	
                                   };
            SqlDataReader Dread = dataGetUserInfo.ExceReadCmd(strGetUserInfo, Dpa);
            if (Dread.HasRows)
            {
                while (Dread.Read())
                {
                    username = Dread["USER_NAME"].ToString();
                    name = Dread["NAME"].ToString();
                }
            }
            Dread.Close();
            Dread.Dispose();
            dataGetUserInfo.Close();

            //插入留言数据
            
            string strSql = "insert into Comment_INFO(Comment_content,Comment_Time,USER_ID,USER_NAME,NAME,ART_ID)" + " values (@Comment_content,@Comment_Time,@USER_ID,@USER_NAME,@NAME,@ART_ID)";
            DataBase data = new DataBase();
            SqlParameter[] pa ={
                                    data.MakeInParam("@Comment_content",SqlDbType.VarChar,2000,Comment_con),
                                    data.MakeInParam("@Comment_Time",SqlDbType.DateTime,10,DateTime.Now.ToString()),//获取当前系统时间
                                    data.MakeInParam("@USER_ID",SqlDbType.BigInt,8,userid),
                                    data.MakeInParam("@USER_NAME",SqlDbType.NVarChar,50,username),
                                    data.MakeInParam("@NAME",SqlDbType.Char,12,name)
                                   
                                    data.MakeInParam("@ART_ID",SqlDbType.BigInt,8,Convert.ToInt64(LabART_ID.Text))//获取暂存的文章id
							  };
            int intResult = 0;
            intResult = data.RunProc(strSql, pa);
            data.Close();
            data.Dispose();
            if (intResult == 0)
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("留言成功!"));
                srContent.Text = "";
                return;
            }
            else
            {
                CommonClass cc = new CommonClass();
                Response.Write(cc.MessageBoxPage("提交至数据库时发生错误!"));
                return;
            }
        }
    }

    private void ReadComment(int id)
    {
        //查询改文章的留言信息
        string commentlist = "";
        string strGetUserInfo = "select Comment_content,Comment_Time,USER_ID,USER_NAME,NAME,ART_ID from Comment_INFO where ART_ID=@ART_ID order by Comment_Time desc";
        DataBase dataGetUserInfo = new DataBase();
        SqlParameter[] Dpa ={
                               dataGetUserInfo.MakeInParam("@ART_ID",SqlDbType.BigInt,8,id)	
                                   };
        SqlDataReader Dread = dataGetUserInfo.ExceReadCmd(strGetUserInfo, Dpa);
        if (Dread.HasRows)
        {
            while (Dread.Read())
            {
                
             commentlist = commentlist + "<tr><td>Dread["NAME"] + "</td><td>" + Dread["Comment_content"] + "</td><td>" + Dread["Comment_Time"] + "</td></tr>";

            }
        }
        Dread.Close();
        Dread.Dispose();
        dataGetUserInfo.Close();
        CommentList.Text = commentlist;
    }
   
}

 

© 著作权归作者所有

共有 人打赏支持
蔬菜kiki
粉丝 1
博文 11
码字总数 4093
作品 0
杭州
程序员
C#多线程lock解决数据同步

1.代码实例: { } 使用lock锁前后结果对比: 使用Lock锁前,多线程修改同一数据会出现相同结果, 使用Lock锁后,修改数据保证了数据的在多个线程操作时的同步。 2.使用Lock锁前后的性能对比:...

小麋鹿666
2017/02/04
0
0
Javascript Tip(1) 操作剪贴板

javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器 javascript可以使用window.clipboardData对象处理剪贴板内容 保存到剪贴板的方法 setData(param1, param2) param1 :数据类...

晨曦之光
2012/03/09
157
0
C#创建对象列表(List

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 玩转C#可有趣了。在这篇文章中,我们将介绍如何用不同的方法创建对象列表。因此,场景是这样的,有...

码农网
2017/12/18
0
0
微软开源深度学习工具包CNTK更新2.3版,带来多重性能改进

雷锋网 AI 科技评论消息,近日微软更新了自家开源深度学习工具包CNTK,新的版本号为2.3,带来了多项性能改进。 CNTK全名为Computational Network Toolkit,与谷歌的TensorFlow、Facebook的C...

杨晓凡
2017/12/01
0
0
多线程下C#如何保证线程安全?

多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题。所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结...

小麋鹿666
2017/01/06
0
0
开发者应该开始学习 C++ 吗?

随着C++ 11和C++ CX的引入,很多人重新燃起了对这门语言的兴趣。不少开发者,尤其是Windows开发者,都想知道是否应该放弃C#和Java,转而支持C++。John Sonmez认为这并不需要。 在“为什么C++...

戴威
2012/12/26
8.5K
44
公众号开通原创有什么好处?

     很多人都想知道公众号开通了原创能有什么好处,有多大的用处呢?我被官方邀请了开通原创(现在只要是公众号都可以使用原创功能了),那么需不需要交钱才能开通原创?或者是开通了公众...

公众开发运营官网
2017/12/15
0
0
Java 博客系统--Zblog 2

Zblog是一个java实现的开源博客系统。 核心功能 文章/页面发布、分类、统计阅读次数。 提供文章形式的RSS聚合。 提供链接的添加、归类功能。 附件上传添加管理功能。 评论的管理,垃圾信息过...

dongfangshangren
2015/07/12
7.9K
6
Django 快速搭建博客 第九节

距离上一节已经快一个礼拜没有写了,我们的博客也快写完了,只不过更多的是一些进阶的学习,这一节,我们学习自己搭建一个文章评论功能 文章评论功能的实现 1 对于文章评论功能,我们可以看到...

徐代龙
2017/11/26
0
0
按下回车表示确定提交

下面的五种方法都可以帮你解决这种问题 1.

晨曦之光
2012/03/09
508
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

sklearn学习笔记之简单线性回归

简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项。线性回归的思想其实就是解一组方程,得到...

wangxuwei
9分钟前
0
0
feign之动态interceptor(二)

背景 上文提到了按照不同的feignClient可以根据多个不同的key来进行多个不同的bean的配置 那么我们如何完成多个interceptor的配置呢? 分析 我们刚提到多个配置的玄机就在FeignClientProper...

Mr_Qi
11分钟前
1
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

问题终结者
36分钟前
0
0
Apache配置时.htaccess失效不起作用的原因分析

.htaccess 失效的原因 1. 重写规则有问题,检查自己的重写规则 2.Apache配置问题,配置中没有配置启用 rewrite a2enmod rewrite 3.网站配置文件没有启用配置需要配置 000-default.conf <Dire...

TU-DESGIN
56分钟前
1
0
两个求最大公约数C/C++算法实现

#include<stdio.h> #include<time.h> #include <iostream>using namespace std;//求最大公约数 LCD(Largest Common Division)//短除法 //m=8251, n=6105; int LCD_ShortDiv(int m, ......

失落的艺术
今天
1
0
QueryPerformanceCounter

windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。 对于微秒延时,没有一个现成的函数,但是可以通过 QueryPerformanceFrequency QueryPerformanceCounter 来间接实现。原理就是...

开飞色
今天
1
0
log4j2使用AsyncRoot不显示行号问题处理

<AsyncRoot level="info" includeLocation="true"> <AppenderRef ref="File"/></AsyncRoot><!--1.异步logger,还需要在pom.xml中添加disruptor的依赖。2.includeLocation结合异......

小翔
今天
3
0
安卓手机上 K 歌,声音延迟怎么解决?

这篇文章可以为你提供一个解决录音和播放同步问题的思路,而且解决了声音从手机传输到耳机上有延时的问题。 初识音频 在开始之前,我先简单介绍一下音频相关的基础知识,方便下文理解。 我们...

编辑部的故事
今天
2
0
使用token实现在有效期内APP自动登录功能

使用token实现在有效期内APP自动登录功能 http://sevennight.cc/2016/07/19/auto_login_impl.html

风云海滩
今天
3
0
Spring Boot集成RabbitMQ发送接收JSON

默认情况下RabbitMQ发送的消息是转换为字节码,这里介绍一下如何发送JSON数据。 ObjectMapper 最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送...

小致dad
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部