Подстановочный знак не работает в SQLite - PullRequest
8 голосов
/ 29 августа 2010

Я продолжаю пытаться использовать подстановочные знаки в поиске в приложении для Android и продолжаю сталкиваться с ошибками.

Я выполняю поиск по моему приложению, используя строку ниже:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
              "name LIKE %?%", new String[] { query }, null, null, null);

, когда я использую name LIKE %?% или name=%?%, я получаю "почти"% ": синтаксическая ошибка:, при компиляции: SELECT _id, name FROM namedrxns WHERE name =%?% "error.

, но с name LIKE '%?%' или name='%?%' вместо этого я получаю" индекс привязки или столбца вне диапазона: дескриптор 0x40cb70 "

Может кто-нибудь сказать мне, что я делаю не так?

Спасибо!

Ответы [ 2 ]

25 голосов
/ 09 мая 2011

Добавьте % к параметру query.

IE:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
          "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);

Как уже сказал Томас Мюллер, обратите внимание, что % и _ в пределах значения по-прежнему работают как символы подстановки.

5 голосов
/ 30 августа 2010

Следующее должно работать (но я не проверял его с SQLite):

"name LIKE '%' || ? || '%'"

Обратите внимание, что "%" и "_" в значении по-прежнему работают как символы подстановки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...