Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用sql查询将所有列值(已应用distinct)检索到listbox中?_C#_Sql_Sql Server_Ado.net - Fatal编程技术网

C# 如何使用sql查询将所有列值(已应用distinct)检索到listbox中?

C# 如何使用sql查询将所有列值(已应用distinct)检索到listbox中?,c#,sql,sql-server,ado.net,C#,Sql,Sql Server,Ado.net,这可能是一个简单的问题,以前也有人回答过,但我不知道如何寻找确切的方法 ->我的表格中有两个列表框。一个是产品名称,另一个是公司名称 ->在页面加载时,Listbox1将从databaseProduct name中检索值。从列表框1中选择项目后,应在列表框2中获取相应的公司名称 例如:数据库名为Motor 这是我的表,名为Register,它包含两列 Productname Companyname Car Bmw Bike

这可能是一个简单的问题,以前也有人回答过,但我不知道如何寻找确切的方法

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

->在页面加载时,Listbox1将从databaseProduct name中检索值。从列表框1中选择项目后,应在列表框2中获取相应的公司名称

例如:数据库名为Motor

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

Productname        Companyname

Car                 Bmw
Bike                Bmw
Car                 Honda
Bike                Honda
我的问题是

我将产品名称详细信息检索到listbox1中,这里的问题是我不想重复相同的项目,所以我使用了Distinct,如下所示

Select Distinct Productname from Register
现在,如果我从列表框1中选择car,则相应的公司名称应显示在列表框2中。但我得到的是我的listbox2上唯一的本田,而不是宝马


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

我不知道该怎么做。希望我不会把你弄糊涂。因此,任何帮助都会对我更有帮助,请提前感谢。

您是否尝试过

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

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);
}
你在用什么 字符串a=dr.GetString0; listbox2.items.adda

它将只从表中获取第一行

使用 字符串a=dr[companyname].toString; listbox2.items.adda


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

只需调试代码,查看查询包含的内容,然后在sql server中获取查询并执行。我使用datareader从数据库中读取并获取值。发布用于读取查询结果集并将其绑定到ListBox2@ChrisL我已经用我使用的查询更新了我的问题。根据您的查询-您没有将字符串a传递给Add,但是,正如您所说,您只得到Honda,那么我假设这是复制/粘贴错误。我建议直接在数据库中运行查询,并检查它们是否按预期返回。是的,这是一个键入错误。根据你的建议,我直接用我的查询在db中进行了尝试,它得到了执行。我得到了宝马和本田。但我没有在前端。我已经尝试了你的方式,但仍然没有改善。我只获取最后一个存储的值。是否已检查查询是否在SQL Server中返回所需的输出?我不需要SQL Server中的。查看我的最新问题。我只想将这些值检索到列表框中。您能分享一下您的表结构吗?从中获取ProductName和table2的表1,即表寄存器。我只有一个表,其中有两列。第一列是Productname,第二列是Companyname。再看看我的问题,你可能会明白我试过什么,我在问什么。。!
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);
}