我需要插入一个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];
如果我传递其他正常工作的值,但只包含'?'的字符串未插入。
请帮帮我。
答案 0 :(得分:0)
?是要替换的值的占位符。您不应该使用stringWithFormat在数据库中插入项目,而是使用占位符。我不知道您使用的是哪个数据库库,但大多数库允许您使用这样的准备好的查询:
[database executeQuery:@"insert into sometable (questions) values (?)", question];
question
将自动转义,您的问号将被保存。这也保护了再次的角色。你应该自己尝试一下,修改问题是“你不高兴我没说香蕉吗?”。您的查询可能会崩溃,因为生成的SQL将无效。