我有如下所述的Access表,现在在搜索中我有一个用于搜索的文本框,它将输入作为字符串,所以当我放入搜索假设 bmw 然后我得到搜索结果正确的,但如果我把宝马铃木那么我什么都没得到。
我正在使用此代码从数据库中获取值:
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
答案 0 :(得分:1)
您的SQL看起来很好,但为什么要调用ExecuteNonQuery?这适用于插入,更新和删除;它不会返回任何行数据。您需要调用ExecuteReader或切换到数据适配器并填充数据集。
还要确保正确引用您的IN语句。它应该是IN('value1','value2')
select * from table1 where name in ('BMW','Audi')
应该是设置为命令文本的内容。
答案 1 :(得分:1)
看起来你可能错过了结束语 - ) - 来自你的SQL语句:
oledbcommand cmd1= new oledbcommand("select * from table1 where name in (" + allnames + ")",myconnection)
答案 2 :(得分:0)
我会使用OR statment ...就像这里:
SELECT * FROM Persons
WHERE FirstName='Tove'
OR FirstName='Ola'