0

我在通过 FMDB 向表中插入值时遇到问题。我有这样的 SQL 字符串:

NSString *sql = [NSString stringWithFormat:@"INSERT INTO table( COMPANY, PAGE_NO ) VALUES ('%@',%d,%d)",value1,value2,value3];

我将这样的 FMDB 用于上面的 SQL 字符串:

[FMDatabase: 0x433e80> executeUpdate: sql]

它有效,但是当我使用value1 = @"Test'12". 它有一个特点" ' ",它失败了。

请帮助我,我想继续使用executeUpdateFMDB的方法

谢谢

4

1 回答 1

4

看起来您没有向查询传递正确数量的参数,您列出了 2 列并传递了 3 个参数。我会假设这是一个错字。

你真的应该参数化你的查询;使用?参数应该去的地方,而不是将它们传递给executeUpdate. 这样,有问题的字符将被自动处理。

这会将您的代码更改为更像;

NSString *sql = @"INSERT INTO table(COMPANY, PAGE_NO) VALUES (?,?)";
[database executeUpdate:sql, value1, [NSNumber numberWithInt:value2], nil];

请注意,调用numberWithIntthat 需要转换intNSNumber,因为executeUpdate它的所有参数都是对象,而不是原始类型。

于 2013-05-09T20:33:03.297 回答