-1

我正在使用 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。' 字符可能会导致错误。

提前致谢。

4

1 回答 1

2

不要试图转义字符串;只需使用参数:

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);
于 2013-04-17T16:19:39.977 回答