【问题标题】:Getting all values from checkboxes and saving them to SQL Server in one row从复选框中获取所有值并将它们保存在一行中的 SQL Server
【发布时间】:2017-04-12 17:15:51
【问题描述】:

我正在尝试使用 Visual Studio 2013 和 SQL Server 2014 开发 Windows 窗体应用程序。

我的问题是关于获取检查的复选框的值,并将所有数据保存到 SQL Server 中的一行。

例子:

TBL_EXAMPLE:

               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的内容应该是这样的:

 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

请指教。

【问题讨论】:

    标签: c# sql sql-server checkbox groupbox


    【解决方案1】:

    您必须用选中的复选框组成一个字符串并将结果写入表中。这是一个(非最佳)解决方案。我说“非最优”是因为我个人更喜欢使用参数,但我不想改变太多,所以你明白了:

    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");
    

    【讨论】:

      【解决方案2】:

      您可以在循环中加入字符串,然后最后插入连接的字符串。

      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");
      

      【讨论】:

      • 给我这样的结果; 1 个复选框2 2 个复选框2 复选框1
      • @SelçukAYDIN 当您选中 2 个复选框时,您在调试窗口中看到变量 checks 的多少元素?
      • @SelçukAYDIN 太好了。不要忘记将其标记为答案然后stackoverflow.com/help/someone-answers
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多