2011-03-30 68 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

相關問題