我正在使用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的。 '字符可能会导致错误。
提前致谢。
答案 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);