【问题标题】:Pass items from checkboxlist to SQL Server table将复选框列表中的项目传递到 SQL Server 表
【发布时间】:2013-07-19 20:10:19
【问题描述】:

我正在尝试从复选框列表中获取项目并将它们添加到 SQL Server 表中。我认为这就像遍历每个项目然后将其插入表中一样简单,但我得到了一个未处理的异常,代码如下:

using (SqlConnection connection = new SqlConnection(connectionString))
{
     for (int i = 0; i <= UPCList.Items.Count; i++)
     {
         string finalSubmit =
              "INSERT INTO Boxes (BoxNumber)"
              + "VALUES @selected";

          SqlCommand command = new SqlCommand(finalSubmit, connection);
          command.Parameters.AddWithValue("@selected", i);
          command.Connection.Open();
          command.ExecuteNonQuery();
          command.Connection.Close();
      }
 }

编辑:以下建议之一有效,但它输入的是项目的 ID,而不是列表项本身的值。如何将列表中每个项目的值插入到 SQL 表中?

【问题讨论】:

  • 有什么异常?
  • 如果您也想知道确切的错误,我建议您将代码包裹在 for 循环中,围绕 try{}catch{}
  • 这不是具体的。只是说未知。

标签: c# sql-server ado.net webforms


【解决方案1】:

VALUES 放在括号中:

"INSERT INTO Boxes (BoxNumber) VALUES (@selected)";

另外,我假设你必须更换

for (int i = 0; i <= UPCList.Items.Count; i++)

for (int i = 0; i < UPCList.Items.Count; i++)

您可能想要插入项目的文本而不是索引:

command.Parameters.AddWithValue("@selected", listBox.Items[i].ToString());

【讨论】:

  • 这行得通,但现在它只是将 ID 放入表中,而不是列表项值。我该怎么做呢?
  • 您的ListBox 的数据源是什么?试试command.Parameters.AddWithValue("@selected", listBox1.Items[i].ToString());
  • 我没有,这行得通!但是,它将项目添加两次,就好像它遍历列表两次一样。我对编程很陌生,所以如果我错过了一些明显的事情,我深表歉意。
  • 如果您不介意以答案的形式提出,我会标记它。
  • @MichaelBowman:为什么两次?我上面的代码只显示了一个循环。
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多