Как добавить 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);