E / SQLiteLog: (1) рядом с "ž": синтаксическая ошибка при фильтрации утилизатора с использованием Room - PullRequest
0 голосов
/ 15 октября 2018

Я получаю ошибку с написанным синтаксисом sql.Я пытаюсь просто отфильтровать имя некоторого поля в сущности, используя Room, заменив специальные символы на «обычные».Вот необработанный запрос:

    SimpleSQLiteQuery simple = new SimpleSQLiteQuery("SELECT * FROM station WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(" + stationName + "), \"ž\", \"z\"), \"Ž\", \"z\"), \"č\", \"c\"), \"Č\", \"c\"), \"š\", \"s\"), \"Š\", \"s\"), \"ć\", \"c\"), \"Ć\", \"c\") LIKE " + "\" REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(stationName), \"ž\", \"z\"), \"Ž\", \"z\"), \"č\", \"c\"), \"Č\", \"c\"), \"š\", \"s\"), \"Š\", \"s\"), \"ć\", \"c\"), \"Ć\", \"c\")"+ "\" ORDER BY stationName ASC");

Я получил ошибку: E / SQLiteLog: (1) рядом с "ž": синтаксическая ошибка, и не имеет значения, какой символ я пишу в editText.Я что-то здесь упускаю.Спасибо за помощь!

1 Ответ

0 голосов
/ 15 октября 2018

Я нашел решение:

    String sql = "SELECT * FROM station WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(stationName), 'ž', 'z'), 'Ž', 'z'), 'č', 'c'), 'Č', 'c'), 'š', 's'), 'Š', 's'), 'ć', 'c'), 'Ć', 'c') LIKE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER('" + station + "'), 'ž', 'z'), 'Ž', 'z'), 'č', 'c'), 'Č', 'c'), 'š', 's'), 'Š', 's'), 'ć', 'c'), 'Ć', 'c') ORDER BY stationName ASC";

Амит Джангид был прав.Я заменил все одинарные кавычки!Спасибо

...