запрос на обновление не работает в sqlite - PullRequest
0 голосов
/ 03 декабря 2011

Моя проблема не может обновить данные из-за одинарной кавычки специального символа (') в базе данных sq-lite.я хочу обновить данные, но специальные символы (') одинарные кавычки в строке дают ошибку в базу данных sq-lite в Android, как обновить.Запрос:

update pollm set dt_lastaccessedon='null',tx_choice1responsecount='1',tx_choice2responsecount='0',tx_choice3responsecount='0',tx_choice4responsecount='0',tx_choice5responsecount='0',tx_userresponse='TX_OPTION2',tx_questiontext='Is BPM mandatory?',tx_title='BPM',tx_choice1='yes',tx_choice2='no',tx_choice3='don't know', tx_choice4='null',tx_choice5='null',dt_availfrom='2011-07-08 00:00:00.0',dt_availto='2011-07-09 00:00:00.0',tx_status='Closed' where lmspollid='321'

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

1 Ответ

1 голос
/ 03 декабря 2011

1.

Вы должны использовать метод update вместо генерации SQL самостоятельно. Встроенные методы сделают все необходимое для вас.

Посмотрите на Android - SQLiteDatabase

Это не только решает проблему с кавычками, но и уменьшает SQL-инъекцию .

2.

Форма здесь SQLite - Часто задаваемые вопросы

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

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

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

3.

Использовать DatabaseUtils.sqlEscapeString . Строка заключена в одинарные кавычки, а одинарные кавычки внутри строки становятся двойными.

...