2011-03-30 47 views
1

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

下面是代码:“?”

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

[database executeNonQuery:query]; 

如果我通过工作正常的其他值,但只有字符串包含未插入。

请帮帮我。

回答

0

?是待替换值的占位符。您不应该使用stringWithFormat将项目插入到数据库中,而是使用占位符。我不知道您使用什么数据库库,但大多数图书馆允许你使用准备好的查询是这样的:

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

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

+0

谢谢你的回复。我试着把'?'而不是'%@',但它再次崩溃。对于'(单引号),我用''(2个单引号)替换了它。但是我没有找到?(问号)的转义字符。任何想法? – Meghan 2011-03-30 06:55:46

+0

你在使用什么数据库库? EGODatabase,fmdb? – clawoo 2011-03-30 06:59:58

+0

我使用SQLite数据库的sqlite3和libsqlite3.dylib框架。 – Meghan 2011-03-30 07:22:03

相关问题