C# 从复选框中获取所有值并将其保存到SQL Server的一行中
我正在尝试使用Visual Studio 2013和SQL Server 2014开发一个Windows窗体应用程序 我的问题是获取检查的复选框的值,并将所有数据保存到SQL Server中的一行 例如:C# 从复选框中获取所有值并将其保存到SQL Server的一行中,c#,sql,sql-server,checkbox,groupbox,C#,Sql,Sql Server,Checkbox,Groupbox,我正在尝试使用Visual Studio 2013和SQL Server 2014开发一个Windows窗体应用程序 我的问题是获取检查的复选框的值,并将所有数据保存到SQL Server中的一行 例如: TBL\u示例: ID int PK not null, NAME nvarchar(max) null 我的程序中有3个复选框: checkbox1 - name : chkbx1 checked checkbox2 - na
TBL\u示例
:
ID int PK not null,
NAME nvarchar(max) null
我的程序中有3个复选框:
checkbox1 - name : chkbx1 checked
checkbox2 - name : chkbx2 checked
checkbox3 - name : chkbx3 not checked
我需要将复选框的值添加到SQL Server中名为name的列中
添加SQL Server后,名称的内容应如下所示:
NAME
checkbox1 checkbox2
foreach (Control cont in this.groupBox1.Controls)
{
if (cont is CheckBox)
{
if (((CheckBox)cont).Checked == true)
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_EXAMPLE VALUES ( '" + ((CheckBox)cont).Text.ToString() + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("OK");
}
}
}
ID NAME
1 checkbox1
2 checkbox2
我试着这样写:
NAME
checkbox1 checkbox2
foreach (Control cont in this.groupBox1.Controls)
{
if (cont is CheckBox)
{
if (((CheckBox)cont).Checked == true)
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_EXAMPLE VALUES ( '" + ((CheckBox)cont).Text.ToString() + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("OK");
}
}
}
ID NAME
1 checkbox1
2 checkbox2
结果如下:
NAME
checkbox1 checkbox2
foreach (Control cont in this.groupBox1.Controls)
{
if (cont is CheckBox)
{
if (((CheckBox)cont).Checked == true)
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_EXAMPLE VALUES ( '" + ((CheckBox)cont).Text.ToString() + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("OK");
}
}
}
ID NAME
1 checkbox1
2 checkbox2
我想看看这个:
ID NAME
1 checkbox1 checkbox2
请告知。您可以在循环中加入字符串,然后最后插入连接的字符串
List<string> checks = new List<string>();
foreach (Control cont in this.groupBox1.Controls)
{
if (cont is CheckBox)
{
if (((CheckBox)cont).Checked == true)
{
checks.Add(((CheckBox)cont).Text);
}
}
}
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_EXAMPLE VALUES ( '" + string.Join(" ",checks) + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("OK");
列表检查=新建列表();
foreach(此.groupBox1.Controls中的控件cont)
{
如果(续为复选框)
{
if(((复选框)cont).Checked==true)
{
选中。添加(((复选框)cont.Text);
}
}
}
sqlcon.Open();
SqlCommand sqlcmd=new SqlCommand(“插入TBL_示例值(“”+string.Join(“,checks)+“)”,sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show(“OK”);
您必须用选中的复选框组成一个字符串,并将结果写入表中。这里有一个(非最优)解决方案。我之所以说“非最佳”,是因为我个人更喜欢使用参数,但我不喜欢改变太多,这样你就明白了:
StringBuilder name = new StringBuilder();
foreach (Control cont in this.groupBox1.Controls)
{
if (cont is CheckBox)
{
if (((CheckBox)cont).Checked == true)
{
name.Append(((CheckBox)cont).Text.ToString() + " ");
}
}
}
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_EXAMPLE VALUES ( '" + name.ToString().Trim() + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("OK");
给我这样的结果;1检查箱2检查箱2checkbox1@SelçukAYDIN当您选中2个复选框时,您在调试窗口中看到变量
检查的元素有多少?@SelçukAYDIN很棒。别忘了把它标为答案