使用asp.net将CheckBoxlist值保存到数据库

时间:2014-05-17 03:08:14

标签: c# asp.net sql-server

SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("insert into reg (name,num,gender,qual) values
(@name,@num,@gender,@qual)", con);
        cmd.Parameters.AddWithValue("@name", TextBox1.Text);
        cmd.Parameters.AddWithValue("@num", TextBox2.Text);
        cmd.Parameters.AddWithValue("@gender",     
 RadioButtonList1.SelectedItem.ToString());
        for (int i = 0; i < CheckBoxList1.Items.Count - 1;i++ )
        {
            if(CheckBoxList1.Items[1].Selected)
            {
                string var = string.Empty;
                var += CheckBoxList1.Items[1].Text.ToString();
                cmd.Parameters.AddWithValue("@qual",var);
            }
        }
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            Response.Write("<script language='javascript'>alert(
               'record has been added');</script>");
        }
        catch (Exception er)
        {
            Response.Write("<script language='javascript'>alert(
          'conncetion error');</script>");
        }
        finally
        {
            con.Close();
        }

我是asp.net的初学者。我不知道如何将checkboxlist值保存到数据库。我上面的代码只保存了最后一个值。请帮助我,提前谢谢......

2 个答案:

答案 0 :(得分:0)

您正在迭代循环,但只是在我将1更改为i时才比较值1。 而且我认为你需要收集价值而且只需要一次。我已经移动了cmd.Parameters.AddWithValue(&#34; @ qual&#34;,s);语句超出for循环

注意:我将值与&#39;,&#39;分开。我不知道这是您的业务需求

 string s;
 for (int i = 0; i < CheckBoxList1.Items.Count - 1;i++ )
    {
        if(CheckBoxList1.Items[i].Selected)//changed 1 to i 
            s += CheckBoxList1.Items[i].Text.ToString() + ","; //changed 1 to i
    }

 cmd.Parameters.AddWithValue("@qual",s);

答案 1 :(得分:0)

这是因为您只在for循环之外执行一次命令。

如果将Execute查询移动到for循环中,它应该可以工作。

请注意,这将修复您的代码,但它既不安全也不是最佳。