如何在init sql string中向字符串添加转义字符?

时间:2013-04-17 10:18:33

标签: ios sqlite nsstring fmdb

我正在使用FMDB来管理我的sqlite数据库。我实现了一个insert函数并用它来插入一些行。但是有一行无法插入,插入时,错误代码为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的。 '字符可能会导致错误。

提前致谢。

1 个答案:

答案 0 :(得分: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);