2011-02-15 223 views
0

我有访问表,如下所述,现在在搜索我有一个文本框用于搜索,它采取输入作为字符串,所以当我放入搜索假设宝马然后我得到的搜索结果正确,但如果我把bmw suzuki然后我什么也得不到。多个记录从Access中选择

我使用这个代码从DATABSE获取值:

string [] car_name;  
string allnames = "'" + String.Join("','", car_name) + "'"; 
for (int k = 0; k < car_name.Length; k++) 
      { 
    oledbcommand cmd1= new oledbcommand("select * from table1 where name in (" + allnames + ",myconnection) 
    cmd1.exectuenonquery(); 

这是表结构:

id name keywords 
1 cars bmw 

2 cars toyota 

3 cars suzuki 

4 truck bmw 

5 truck scania 

6 jeeps bmw 

7 jeeps suzuki 

回答

1

看起来你可能会丢失收盘括号 - ) - 从您的SQL语句:

oledbcommand cmd1= new oledbcommand("select * from table1 where name in (" + allnames + ")",myconnection) 
0

我会用OR statment ...喜欢这里:

SELECT * FROM Persons 
WHERE FirstName='Tove' 
OR FirstName='Ola' 
+0

I M查询的只是一列可以读取SQL语句,我不需要或不?谢谢 – safi 2011-02-15 16:46:07

+1

这不是一个好主意,你可能会得到比任何明智的人都想要的更多的OR。 IN,这是safi使用的,绝对是最好的选择。 – Fionnuala 2011-02-15 18:07:41

1

你的SQL看起来很好,但你为什么要调用ExecuteNonQuery?这是为了插入,更新和删除;它不会返回任何行数据。您需要调用ExecuteReader或切换到数据适配器并填充数据集。

还要确保您的IN语句正确引用。它应该是IN('value1','value2')

select * from table1 where name in ('BMW','Audi')应该被设置为命令文本。

+0

我不想使用常数值,我得到你说的,但我试过这个,它不适合我。 – safi 2011-02-16 08:59:03