проблема с SQL-запросом - PullRequest
       2

проблема с SQL-запросом

0 голосов
/ 15 апреля 2011

У меня есть этот код для запроса базы данных:

for (int kk = 1; kk < search.Length; kk++)
{
    where +=  " and keyword like '%"+search[kk]+";%'";
    OleDbCommand sqlcmd = new OleDbCommand(
      "select id,name,address,keyword from table1 where  keyword like '%"+search[0]+"%' " + 
      where + "  order by name", sqlconConnection);
    sqlcmd.CommandType = CommandType.Text;
    OleDbDataReader sdaRes = sqlcmd0.ExecuteReader();
    while (sdaRes.Read())
    {
        thumbnails_id[recordcount] = sdaRes.GetInt32(3);
        recordcount++;
    }

    sdaResult0.Close();

}

Когда я выполняю этот запрос в доступе, он возвращает результат, но когда я запускаю его в приложении, он запускается, но не показывает никакого результата.

Структура таблицы:

Таблица БД выглядит так:

id   name   keyword  File  Fkey
1     a      yellow;  c:/   20
2     a      blue;    c:/   20
3     a      Pinky;   c:/   20
4     b      blue;  c:/   21
5     b      Redish;  c:/   21
6     c      yellow;  c:/   22
7     c      blue;    c:/   22
8     c      Pinky;   c:/   22
9     c      orange;  c:/   22
10    c      Redish;  c:/   22

что значит поисковый запрос: select * from this table1 where name like variable and variable two and variable three и т. Д. Таким образом, когда пользовательский тип предполагает, что оранжевый, все результаты должны прийти, тогда, когда пользователь вводит после оранжевого Pinky, тогда должны появляться оранжевые и розовые результаты. но я не знаю, что не так в коде, хотя я не получаю сообщение об ошибке или предупреждение.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

Вам нужно OR вместо AND, потому что ключевое слово не может быть одновременно «красным», «синим» и т. Д. ...

0 голосов
/ 15 апреля 2011
while (sdaRes.Read())
{
    thumbnails_id[recordcount] = sdaResult0.GetInt32(3);
    recordcount++;
}

Либо это опечатка, либо вы на самом деле не читаете результаты от читателя, которого вы используете в своем запросе, также id - это первый столбец, поэтому imo это должно быть:

while (sdaRes.Read())
{
    thumbnails_id[recordcount] = sdaRes.GetInt32(0);
    recordcount++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...