当前位置:编程学习 > C#/ASP.NET >>

用户代码未处理SqlException 从数据类型 varchar 转换为 numeric 时出错。

protected void Button1_Click(object sender, EventArgs e)
    {
        if (Session["username"] == "您还没有登录")
        {
            this.Page.RegisterStartupScript("ss", "<script>alert('您还没有登录,请您登录后再回帖')</script>");
        }
        else
        {
            if (TextBox2.Text == "" || TextBox4.Text == "")
            {
                this.Page.RegisterStartupScript("ss", "<script>alert('请输入回复评论的标题和内容')</script>");
                return;
            }
            else
            {
                //判断输入的验证码是否正确
                string num = this.TextBox3.Text.Trim();
                if (Session["ValidNums"].ToString() == num.ToUpper())
                {
                    // 连接数据库
                    SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings

["connection"].ConnectionString);
                    sqlcon.Open();
                    //获得回复数量
                    string strselect1 = "select * from tb_forums where id='" + Request["id"]+ "'";
                    SqlCommand sqlcmd1 = new SqlCommand(strselect1, sqlcon);
                    SqlDataReader dr1 = sqlcmd1.ExecuteReader();
                    int hfnums = 0;
                    if (dr1.Read())    ///////这里出现错误//////////
                    {
                        hfnums = Convert.ToInt32(dr1["hf_nums"].ToString()) + 1;
                    }
                    dr1.Close();
                    //更改主表中的回复数量
                    string Strupdate = "update tb_forums set hf_nums=" + hfnums + " where id='" + Request

["id"].ToString() + "'";
                    SqlCommand cmd = new SqlCommand(Strupdate, sqlcon);
                    cmd.ExecuteNonQuery();
                    //向子表中插入数据
                    string StrInserts = "insert into tb_Sub_forums

(forumid,styleid,title,contents,dates,authorid,first_forum) values

(@forumid,@styleid,@title,@contents,@dates,@authorid,0)";
                    SqlCommand cmds = new SqlCommand(StrInserts, sqlcon);
                    // 添加参数并且设置参数值
                    cmds.Parameters.Add("@forumid", SqlDbType.VarChar);
                    cmds.Parameters["@forumid"].Value = Request["id"].ToString();
                    cmds.Parameters.Add("@styleid", SqlDbType.VarChar);
                    cmds.Parameters["@styleid"].Value = GetStyleId(Session["forumstyle"].ToString()).ToString();
                    cmds.Parameters.Add("@title", SqlDbType.VarChar);
                    cmds.Parameters["@title"].Value = this.TextBox4.Text.ToString();
                    cmds.Parameters.Add("@contents", SqlDbType.VarChar);
                    cmds.Parameters["@contents"].Value = this.TextBox2.Text.ToString();
                    cmds.Parameters.Add("@dates", SqlDbType.VarChar, 50);
                    cmds.Parameters["@dates"].Value = DateTime.Now.ToString();
                    cmds.Parameters.Add("@authorid", SqlDbType.VarChar);
                    cmds.Parameters["@authorid"].Value = Session["userid"].ToString();
                    // 执行插入数据的操作
                    cmds.ExecuteNonQuery();
                    sqlcon.Close();
                    this.Page.RegisterStartupScript("ss", "<script>alert('恭喜您,成功回帖!')</script>");
                }
                else
                {
                    this.Page.RegisterStartupScript("ss", "<script>alert('您输入的验证码不正确!')</script>");
                }
            }
        }
    } --------------------编程问答-------------------- string Strupdate = "update tb_forums set hf_nums=" + hfnums + " where id='" + Request["id"].ToString() + "'";

你的id字段类型不是数字类型的吗?如果是是不能加引号的
string Strupdate = "update tb_forums set hf_nums=" + hfnums + " where id=" + Request["id"].ToString() ;

其他地方也是类似 --------------------编程问答-------------------- cmds.Parameters.Add("@forumid", SqlDbType.VarChar);
forumid是VarChar类型?
如果你搞不懂类型,你及直接写
cmds.Parameters.AddWithValue("@forumid", Request["id"].ToString());
不要指定类型 --------------------编程问答-------------------- 数据库中的字段类型是整型,你传的参数却是字符型,

cmds.Parameters.Add("@forumid", SqlDbType.Int32);

检查数据库字段的类型,把相应的参数类型修改一下
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,