日期:2014-05-18  浏览次数:20771 次

制作一个按钮,每个用户只能单机一次,同时它对于后台的数据库里的一个int字段做+1处理
我要做一个会议的关注按钮,每个用户可以在页面中点击一次这个按钮。从而使得这个会议的关注度字段HOT_meet+1,别人给我的提示是:
加1的功能,通过SQL的UPDATE语句就可以实现.
控制只能点一次,这个可以通过在另一个表中保存用户名和已点击的记录号, 在UPDATE之前检查是否有对应的记录存在,如果没有,就执行UPDATE并向这个表插入点击记录,否则不执行UPDATE语句.
于是我用了个Imagebutton写了一个单击事件。代码如下, 但问题是。我总是只执行2sql语句中的一个。要么是给一个表中的HOT_meet+1 要么就是给另一个表里insert用户名和会议名的联系。
C# code
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "server=(local);database=Meet;Integrated Security=SSPI";// 创建命令(SqlCommand)对象(cmd)
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con; // 指示命令发给哪个数据库
    cmd.CommandType = CommandType.Text; // 指示是什么类型的命令
    cmd.CommandText = "select * from [care] where NAME_user = '" + this.Label3.Text.ToString() + " ' and TITLE_meet = '" + this.titlelabel.Text.ToString() + " '";
    con.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    try
    {
        if (reader.Read())
        {
            reader.Close();
            Response.Write(" <script>alert(' 您已关注过此会议 ') </script>");
        }
        else
        {
            reader.Close();
            cmd.CommandText = "update [meet] set HOT_meet = HOT_meet + 1 where TITLE_meet='" + this.titlelabel.Text.ToString() + "'";
            SqlCommand cmd2 = new SqlCommand();
            cmd2.Connection = con;
            cmd2.CommandType = CommandType.Text;
            cmd2.CommandText = "insert into [care](NAME_user,TITLE_meet) values(@nameuser,@meettitle)";
            cmd2.Parameters.Add("@nameuser",SqlDbType.VarChar,50);
            cmd2.Parameters["@nameuser"].Value = Label3.Text;
            cmd2.Parameters.Add("@meettitle", SqlDbType.VarChar,100);
            cmd2.Parameters["@meettitle"].Value = titlelabel.Text;
            int i = cmd.ExecuteNonQuery();
            Response.Write("<script>alert('您已经关注成功');</script>");
            hotlabel.Text = Convert.ToString(Convert.ToInt32(hotlabel.Text) + 1);

        }

        con.Close();
    }
    catch
    {
    }


}

请问这是什么原因?不能同时两个cmd命令么?。 如果我全用CMD 不用cmd2.他就只运行insert。而我用了CMD2它只运行update

------解决方案--------------------
你cmd2都没执行啊,怎么插入?
------解决方案--------------------
cmd2再执行一下啊。。


int i = cmd.ExecuteNonQuery();
cmd2.ExecuteNonQuery();