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值保存到数据库。我上面的代码只保存了最后一个值。请帮助我,提前谢谢......
答案 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循环中,它应该可以工作。
请注意,这将修复您的代码,但它既不安全也不是最佳。