2013-05-09 15 views
0

У меня проблема с введением значения в таблицу с помощью FMDB. У меня есть SQL строку, как это:Вставить специальный символ на SQLite с FMDB

NSString *sql = [NSString stringWithFormat:@"INSERT INTO table(COMPANY, PAGE_NO) VALUES ('%@',%d,%d)",value1,value2,value3]; 

И я использую FMDB как это для SQL строки выше:

[FMDatabase: 0x433e80> executeUpdate: sql] 

Он работает, но когда я использую value1 = @"Test'12". У него есть символ " ' ", и он терпит неудачу.

Пожалуйста, помогите мне, я хочу продолжать использовать метод executeUpdate от FMDB

Благодаря

ответ

4

Похоже, вы не передаете правильное количество параметров в запросе, вы листинг 2 столбца и передавая 3 параметра. Я предполагаю, что это опечатка.

Вы должны действительно параметризовать свой запрос; используйте ?, где должны идти параметры и вместо этого передать их executeUpdate. Таким образом, проблемные символы будут обрабатываться автоматически.

Это изменит ваш код на что-то более похожее;

NSString *sql = @"INSERT INTO table(COMPANY, PAGE_NO) VALUES (?,?)"; 
[database executeUpdate:sql, value1, [NSNumber numberWithInt:value2], nil]; 

Обратите внимание на вызов numberWithInt, который требуется преобразовать int к NSNumber, поскольку executeUpdate требует все свои аргументы, чтобы быть объектами, а не примитивные типы.

Смежные вопросы