Проблема при чтении контактов с помощью ContactsContract .Контакты.CONTENT_URI

#android

#Android

Вопрос:

Мне нужно выполнить поиск по определенному имени в ma contacts… для этого я задал критерии выбора следующим образом

 ContactsContract.Contacts.DISPLAY_NAME   " LIKE '" constraint "%'"
  

Но для апострофа (‘) … означает …когда я ввел апостроф в качестве ограничения, возникает исключение (ошибка SQL) .. для всех других специальных символов поиск работает..

Как мы можем справиться с апострофом ограничения (‘) …в критериях поиска .. boz у нас могут быть имена контактов с апострофом (например: Jennifer’lo’pe_z)

Ответ №1:

Как мне использовать строковый литерал, содержащий встроенный символ одинарной кавычки (‘)?

Стандарт SQL указывает, что одинарные кавычки в строках экранируются путем помещения двух одинарных кавычек в строку. В этом отношении SQL работает как язык программирования Pascal. SQLite следует этому стандарту.

Пример:

 INSERT INTO xyz VALUES('5 O''clock');
  

ИТАК, просто для вашего решения используйте » на месте». like

 if(constraint.contains("'")) 
            constraint = constraint.replace("'", "''");
  

А затем выполните свой запрос. Это должно вам помочь.

Счастливого кодирования 🙂