0

我想将多复选框列表值更新到数据库。我已经将我的复选框列表从其他表(即药物表)中数据绑定。现在我想将我的值更新到咨询表,但我不能

`

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 = "";
        }
}







    `
4

1 回答 1

0

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

String sql = "UPDATE [consultation] set mname3 = " + str + " WHERE [conid] = @conid";

在这里,您使用字符串连接,您的 sql 查询将如下所示: UPDATE [consultation] set mname3 = sometextvale WHERE [conid] = @conid

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

String sql = "UPDATE [consultation] set mname3 = ' " + str + " ' WHERE [conid] = @conid";

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

String sql = "UPDATE [consultation] set mname3 = @mname3 WHERE [conid] = @conid";

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

一些额外的评论:

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

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

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

于 2013-05-25T05:06:21.603 回答