2013-11-30 2 views
0

Я построить строку выбора для выполнения поиска FTS3 по нескольким столбцам:связывания selectionArgs в запросе FTS3, растянутый на несколько столбцов

final String selection = "table MATCH 'column1:? OR column2:?'" 

Я также прохождение selectionArgs, содержащие условия поиска. Проблема заключается в том, что я получаю исключение во время аргумента связывания:

11-30 13: 22: 27,475 26281-26323/com.example.myapp W/SuggestionsAdapter: Поиск предложений запрос вызвал исключение. java.lang.IllegalArgumentException: Невозможно связать аргумент с индексом 2, потому что индекс выходит за пределы диапазона. Оператор имеет 0 параметров. в android.database.sqlite.SQLiteProgram.bind (SQLiteProgram.java:212) в android.database.sqlite.SQLiteProgram.bindString (SQLiteProgram.java:166)

Когда я заменить знаки вопроса в MATCH строка аргумента с жестко запрограммированными условиями поиска и selectionArgs = null, запрос работает и возвращает правильные результаты.

Как связать selectArgs с запросом FTS3, который выполняет поиск по нескольким столбцам?

ответ

0

Следующий подход работает для меня:

  • Использование String.format() построить selectionArgs, используя поисковые термины в качестве аргументов.
  • Используйте один аргумент для построения selection

В коде:

final String selection = "table MATCH ?" 
final String[] selectionArgs = { String.format("column1:%s* OR column2:%s*", term1, term2) }; 
Смежные вопросы