Проблема с 'char в SQLite - Android - PullRequest
0 голосов
/ 16 июня 2011

Всякий раз, когда поисковый запрос содержит «char, мое приложение для Android падает, потому что оно думает, что» разбивает строку. Вот пример -

Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like '%"+editTextSearch.getText().toString()+"%'", null);

Всякий раз, когда editTextSearch.getText().toString() содержит '(например, "Ben's"), приложение вылетает.

Я не могу думать об этом в любом случае. Мог бы действительно использовать помощь.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 16 июня 2011

Что вам действительно нужно сделать, так это использовать метод SQLiteDatabase rawQuery с массивом строк для аргументов выбора:

Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like ?", new String[] {"%" + editTextSearch.getText().toString() + "%"});

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

Редактировать: также для использования like, вы можете добавить % Символ внутри массива String, как будто я только что изменился.Я обнаружил, что это приводит к запросу, который я ожидаю, вместо включения % в самой строке запроса.

0 голосов
/ 16 июня 2011

Вы должны использовать его следующим образом:

String args [] = new String [] {editTextSearch.getText (). ToString ()};

Курсор selCur = myDataBase.rawQuery ("ВЫБРАТЬ * ИЗ НАПИТКОВ, ГДЕ НАИМЕНОВАТЬ, как"%?% '", Аргументы);

0 голосов
/ 16 июня 2011

экранировать символ ', не уверен, что это правильный синтаксис, но что-то вроде этого должно работать:

Cursor selCur= myDataBase.rawQuery("SELECT * FROM drinks WHERE name like '%"+editTextSearch.getText().toString().replace("'", "''")+"%'", null);

Остерегайтесь впрыска sql, кстати. Вы должны проверить поле editTextSearch для внедрения SQL.

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