如何使用sql查询检索列表框中的所有列值(已应用的不同)?

时间:2014-02-14 09:26:27

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

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

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

- >在页面加载时,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中选择汽车,则相应的公司名称应显示在listbox2中。但是我的列表框2上只有本田而且没有宝马。

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来读取并从数据库中获取值。

我不知道该怎么做。希望我不要混淆你。所以任何帮助都会对我更有帮助,并提前感谢。

3 个答案:

答案 0 :(得分:0)

你试过吗,

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

答案 1 :(得分:0)

试试这个..

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

答案 2 :(得分:0)

你正在使用 string a = dr.GetString(0);    listbox2.items.add(一);

将仅从表中获取第一行..

使用 string a = dr [“companyname”]。toString(); listbox2.items.add(一);

这可以解决你的问题。