Как добавить escape-символ в строку при инициализации строки SQL?

Я использую FMDB для управления базой данных sqlite. Я реализую функцию вставки и использую ее для вставки некоторых строк. Но есть строка, которая не может быть вставлена, при вставке код ошибки равен 7, и сообщение об ошибке отсутствует в памяти.

Я отслеживаю выполнение SQL и нахожу, что одно строковое значение имеет символ ', который может вызвать неправильное выражение SQL. Поэтому мне интересно, как преобразовать этот символ, чтобы вставить его в базу данных.

строка sql NSString *sql = [NSString stringWithFormat:@"INSERT INTO table( COMPANY, PAGE_NO, RECORD_ID) VALUES('%@',%d,%d)",table.company,table.page_no,table.record_id]; и вывод консоли

<FMDatabase: 0x433e80> executeUpdate: INSERT INTO table(COMPANY, PAGE_NO, RECORD_ID) VALUES('Wendy's',-1,234)

COMPANY - это текст, а соответствующее значение - Wendy's. символ 'может вызвать ошибку.

Заранее спасибо.

1 ответ

Решение

Не пытайтесь избегать строк; просто используйте параметры:

sql = [NSString stringWithFormat:
       @"INSERT INTO tbl(COMPANY, PAGE_NO, RECORD_ID) VALUES(?, %d, %d)",
       table.page_no, table.record_id];
sqlite3_prepare_v2(...);
sqlite3_bind_text(statement, 1, [table.company UTF8String], -1, SQLITE_TRANSIENT);
Другие вопросы по тегам