在asp.net C#中将Checkboxlist更新到数据库

时间:2013-05-25 04:49:29

标签: asp.net

我想将多个checkboxlist值更新到数据库。我已经从其他表中将我的checkboxlist数据绑定,这是一个药物表。现在我想将我的价值更新到咨询表,但我不能

`

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
     try
    {
       for (int i = 0; i < txtcheckbox.Items.Count - 1; i++)
        {
          if (txtcheckbox.Items[i].Selected == true)
          {
                str = str + txtcheckbox.Items[i].Text + ",";
            }
         }


        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        String sql = "UPDATE [consultation]  set mname3 = " + str + "  WHERE [conid] = @conid";

        con.Open();
        SqlCommand cmd = new SqlCommand(sql, con);

        cmd.Parameters.AddWithValue("@conid", txtconid);
        cmd.Parameters.AddWithValue("@mname3", str);

        int j = cmd.ExecuteNonQuery();
        if (j > 0)
        {
            Label2.Visible = true;
            Label2.Text = "Successfully Complete Dispensary";

            txtconid.Text = "";
        }
        else
        {
            Label2.Visible = true;
            Label2.Text = "Not Successfully Complete Dispensary";

            txtconid.Text = "";
        }
             con.Close();
       }
        catch 
        {
          Label2.Visible = true;
           Label2.Text = "Error";

            txtconid.Text = "";
        }
}







    `

1 个答案:

答案 0 :(得分:0)

我猜你这里有例外。这是因为:

  

String sql =“UPDATE [咨询]设置mname3 =”+ str +“WHERE [conid] = @conid”;

这里你使用字符串的连接,你的SQL查询将如下所示: 更新[咨询]设置 mname3 = sometextvale WHERE [conid] = @conid

mname3我有nvarchar sql类型,所以你需要把字符串值放在qoutes中:

  

String sql =“UPDATE [咨询]设置mname3 = '”+ str +“' WHERE [conid] = @conid”;

或者你可以使用paramaeter进行sql查询,就像你已经为@conid做的那样:

  

String sql =“UPDATE [咨询]设置mname3 = @mname3 WHERE [conid] = @conid”;

这是安全方式的更好解决方案。

其他一些评论:

  

for(int i = 0; i&lt; txtcheckbox.Items.Count - 1; i ++)

你确定这里应该是txtcheckbox.Items.Count - 1吗?你将失去最后一个。

第二个:在页面后面的代码中混合构造和执行查询(DAL)的代码与某种业务逻辑不是一个好的做法=)