Несколько записей выбрать из доступа - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть таблица доступа, как описано ниже, теперь в поиске у меня есть текстовое поле, используемое для поиска, оно принимает ввод как строку, поэтому, когда я помещаю в поиск, предположим, bmw , тогда я получаю результат поиска правильно , но если я поставлю bmw suzuki , тогда я ничего не получу.

Я использую этот код для получения значений из базы данных:

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

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Ваш SQL выглядит нормально, но почему вы вызываете ExecuteNonQuery?Это для вставок, обновлений и удалений;он не вернет никаких данных строки.Вам нужно вызвать ExecuteReader или переключиться на адаптер данных и заполнить набор данных.

Также убедитесь, что ваш оператор IN правильно указан в кавычках.Это должно быть IN ('value1', 'value2')

select * from table1 where name in ('BMW','Audi') должно быть тем, что установлено в качестве текста команды.

1 голос
/ 15 февраля 2011

Похоже, вы можете пропустить закрывающую скобку -) - из вашего оператора SQL:

oledbcommand cmd1= new oledbcommand("select * from table1 where name in (" + allnames + ")",myconnection)
0 голосов
/ 15 февраля 2011

Я бы использовал ИЛИ устав ... Как здесь:

SELECT * FROM Persons
WHERE FirstName='Tove'
OR FirstName='Ola'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...