【问题标题】:How to retrieve all the column values(distinct had been applied) into listbox by using sql query?如何使用 sql 查询将所有列值(已应用不同)检索到列表框中?
【发布时间】:2014-02-14 20:19:18
【问题描述】:

这可能是一个简单的问题,而且这个问题之前已经回答过,但我不知道如何寻找确切的方法。

-> 我的表单中有两个列表框。一个是产品名称,一个是公司名称。

-> 在页面加载时,Listbox1 将从database(Product name) 检索值。从listbox1 中选择项目后,应在listbox2 中获取相应的公司名称。

例如:数据库名称为 Motor

这是我的名为“Register”的表,它包含两列,

Productname        Companyname

Car                 Bmw
Bike                Bmw
Car                 Honda
Bike                Honda

我的问题是

我将产品名称详细信息检索到listbox1,这里的事情是我不想重复相同的项目,所以我像这样使用了 Distinct,

Select Distinct Productname from Register

现在,如果我从列表框 1 中选择汽车,则相应的公司名称应显示在列表框 2 中。但是我得到的只有本田在我的 listbox2 上,没有得到宝马。

Sqlcommand cmd=new Sqlcommand("Select Companyname from Register where Productname='"+listbox1.selecteditem+"'",con);
Sqldatareader dr=cmd.Executereader();
while(dr.Read())
{
   string a=dr.GetString(0);
   listbox2.items.add(a);
}

这是用于将值检索到 listbox2 中的查询。我使用 datareader 从数据库中读取和获取值。

我不知道该怎么做。希望不会让您感到困惑。因此,任何帮助都会对我更有帮助,并提前致谢。

【问题讨论】:

  • 简单地调试你的代码,看看你查询的内容,然后获取查询并在sql server中执行。
  • "我使用 datareader 从数据库中读取和获取值。"发布您的代码以读取查询结果集并将其绑定到您的 ListBox2
  • @ChrisL 我已经用我使用的查询更新了我的问题。
  • 从您的查询中 - 您没有将字符串 a 传递给您的 Add(),但是正如您所说的您只是获得 Honda,那么我认为这是复制/粘贴错误。我建议直接在数据库中运行您的查询并检查它们是否按预期返回。
  • 是的,这是一个打字错误。根据您的建议,我直接在 db 中尝试使用我的查询,它被执行。我得到了宝马和本田。但我没有进入前端。

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


【解决方案1】:

你试过了吗,

    Select Companyname from Register 
    where Productname='"+listbox1.GetItemText(listbox1.SelectedItem)+"'

【讨论】:

  • 我试过你的方法,但还是没有改善。我只得到最后存储的值。
  • 您是否检查过您的查询是否在 SQL Server 中返回了所需的输出?
  • SQL Server 中不需要。查看我更新的问题。我只想将值检索到列表框中。
  • 你能分享一下你的表结构吗? (表 1 从中获取 ProductName 和表 2,即表寄存器)。
  • 我只有一张有两列的表。第一列是产品名称,第二列是公司名称。再看看我的问题,你可能会明白我的尝试和要求..!
【解决方案2】:

试试这个..

Sqlcommand cmd=new Sqlcommand("Select Companyname from Register where Productname='"+listbox1.selecteditem.toString()+"'",con);
Sqldatareader dr=cmd.Executereader();

listbox2.items.clear();

while(dr.Read())
{
   string a=dr['Companyname'].toString();
   listbox2.items.add(a);
}

【讨论】:

    【解决方案3】:

    你正在使用 字符串 a=dr.GetString(0); listbox2.items.add(a);

    这将只从表中获取第一行..

    使用 字符串 a=dr["公司名称"].toString(); listbox2.items.add(a);

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多