如何插入'?'来自iPhone SDK的SQLite数据库中的(问号)

时间:2011-03-30 06:23:50

标签: iphone objective-c cocoa-touch sqlite ios4

我需要插入一个NSString,其中包含'?' (问号),在sqlite数据库中。当我尝试执行[database executeNonQuery:query]时,应用程序崩溃了:

以下是代码:

NSString *question = [NSString stringWithFormat:@"How are you?"];
NSString *query = [NSString stringWithFormat:@"insert into sometable (questions) values ('%@') ",question];

[database executeNonQuery:query];

如果我传递其他正常工作的值,但只包含'?'的字符串未插入。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

?是要替换的值的占位符。您不应该使用stringWithFormat在数据库中插入项目,而是使用占位符。我不知道您使用的是哪个数据库库,但大多数库允许您使用这样的准备好的查询:

[database executeQuery:@"insert into sometable (questions) values (?)", question];

question将自动转义,您的问号将被保存。这也保护了再次的角色。你应该自己尝试一下,修改问题是“你不高兴我没说香蕉吗?”。您的查询可能会崩溃,因为生成的SQL将无效。