Я строю строку в Какао для использования в качестве оператора SQL, который будет передан в обертки FMDB для sqlite; тем не менее, база данных завершается с ошибкой BAD_ACCESS. У меня есть следующий код:
prefix = @ "SELECT * FROM Table, WHERE Field1 LIKE '%";
middle = @ "% 'ИЛИ Field2 LIKE'%";
суффикс = @ "% 'ORDERY BY";
orderby = @ "% 'ORDER BY Имена полей";
sqlStatement = [NSString stringWithFormat: @ "% @% @% @% @% @% @", префикс, searchString, middle, searchString, суффикс, orderby];
Во время выполнения sqlStatement содержит что-то вроде следующего:
ВЫБРАТЬ * ИЗ таблицы ГДЕ Поле1 LIKE \ '% A% \' ИЛИ Field2 LIKE \ '% A% \' ORDER BY Имена полей
По какой-то причине в строку добавляется символ \, который вызывает бомбардировку базы данных.
Есть идеи, как я могу предотвратить появление \ в моей строке?
UPDATE:
Когда я вывожу свою переменную через NSLog, я получаю следующее:
ВЫБРАТЬ * ИЗ таблицы ГДЕ Поле1 LIKE 'OX1.87A8013DBD18F-1027' ИЛИ Field2 LIKE 'OX1.87A8013DBD18F-1027'ORDER BY Имя поля.
Кажется, проблема в использовании% A в строке. Даже если я жестко закодирую переменную sqlStatement для включения «% A%»,% A, похоже, преобразуется в адрес памяти или что-то в этом роде. Если я сделаю «% ABAP%», я получу вывод типа «OX1.87A8013DBD18F-1027BAP». Обратите внимание, я теряю знак%.