Как использовать подстановочные знаки в запросе SQLite? - PullRequest
0 голосов
/ 03 мая 2018

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

public Cursor getSearch(String item) {
    SQLiteDatabase db = this.getReadableDatabase();
    String mQuery = "SELECT * FROM hadiths WHERE text LIKE %"+item.toString()+"%";
    Cursor cursor = db.rawQuery(mQuery, null);
    return cursor;
}

Logcat показывает следующую ошибку.

Вызывается: android.database.sqlite.SQLiteException: вблизи "%": синтаксическая ошибка (код 1): при компиляции: SELECT * FROM hadiths WHERE text LIKE% fast%

Я знаю, что подстановочный знак %% и строковая переменная вызывают проблемы, но как использовать строковую переменную вместе с подстановочным знаком?

1 Ответ

0 голосов
/ 03 мая 2018

Вам необходимо добавить одинарные кавычки в запрос.

String mQuery = "SELECT * FROM hadiths WHERE text LIKE '%"+item+"%'";

Взгляните на документы по SQLite: https://www.tutorialspoint.com/sqlite/sqlite_like_clause.htm

Примечание: нет необходимости использовать toString(), так как "item" уже имеет тип String.

...