SQL Server 列到组合框



我有一个名为Product的表。此表的一列称为 Naam 。它是产品的名称。当您按下按钮时,所有产品名称都必须添加到组合框中。

因此,如果我有2种产品:可乐和芬达。

程序必须仅显示组合框中的列Naam。不是其他列。

我的按钮已经有了这个,但它不起作用。

db.AlleProducten("Select Naam from Product;", Product);
cb_product.Items.Add(Product.Naam);

这是运行查询的方法:

public void AlleProducten(string commandText, product Product)
{
    using (SqlConnection conn = new SqlConnection(connectionString))
    using (SqlCommand cmd = new SqlCommand(commandText, conn))
    {
        conn.Open();
        using (var rdr = cmd.ExecuteReader())
        {
             if (rdr.HasRows)
             {
                 rdr.Read();
                 Product.Naam = rdr.GetString(1);
                 conn.Close();
             }
        }
    }
}

错误:

System.Data 中发生类型为"System.IndexOutOfRangeException"的未处理异常.dll

附加信息: De index ligt buiten de matrixgrenzen.

其他信息以荷兰语提供。翻译成英文:

索引位于数组边界之外。

代码中的第一个问题是当您尝试检索 SqlDataReader 的索引 1 处的值时。您的查询只有一列,并且在 NET 数组中从索引零开始,因此您需要使用此行检索 Naam 值

Product.Naam = rdr.GetString(0);

但是,如果您有多个记录要提取 Naam 值,则需要使用 SqlDataReader 进行循环,直到它从 Read 方法返回 false,并将检索的 Naam 值存储在某种集合结构中。
我建议使用List<string>

public List<string> AlleProducten(string commandText)
{
    List<string> names = new List<string>();
    using (SqlConnection conn = new SqlConnection(connectionString))
    using (SqlCommand cmd = new SqlCommand(commandText, conn))
    {
        conn.Open();
        using (var rdr = cmd.ExecuteReader())
        {
            while(rdr.Read())
                names.Add(rdr.GetString(0));
        }
        conn.Close();
   }
   return names;

}

上面的代码循环访问 SqlDataReader 的返回结果,并将每个 Naam 添加到字符串列表中,最后将列表返回给调用方。
通过这种方式,您可以将 AlleProducten 方法的返回值分配给组合框的数据源

List<string>result = db.AlleProducten("Select Naam from Product;");
cb_product.DataSource = result;

1 - 由于您使用rdr.GetString(1)而不是rdr.GetString(0),因此超出了范围

2 - 代码中没有任何组合框。

using (var rdr = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        Product.Naam = rdr.GetString(0);
        YourComboBox.Items.Add(Product.Naam); 
    }
}

看看 SqlCommand.ExecuteReader 文档。

相关内容

  • 没有找到相关文章

最新更新