C# 从复选框中获取所有值并将其保存到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

我正在尝试使用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 - 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很棒。别忘了把它标为答案