2011-04-04 98 views
0

我用代碼來訪問源碼sqlite3_bind_text爲空字符串

sqlite3_bind_text(statement,1,[myString UTF8String],-1,SQLITE_TRANSIENT); 

它的工作原理。 但是,如果myString爲NULL,它總是會導致更新表中的記錄失敗。 (或沒有更改) 如何處理myStrign爲NULL時的處理?

歡迎任何評論

感謝

+0

您在sqlite中創建表時爲該字段設置了** NOT NULL **? – EmptyStack 2011-04-04 10:34:35

+0

不,我沒有設置NOT NULL – monsabre 2011-04-04 10:40:38

+1

只有受虐者直接在Objective-C中使用SQLite C API。 [使用FMDB](http://github.com/ccgus/fmdb)(一個SQLite包裝器)或[CoreData](http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreData/ cdProgrammingGuide.html)(一個對象圖管理器)。 – 2011-04-04 15:58:26

回答

6

使用sqlite3_bind_null(statement, 1);當你的字符串爲NULL。

if (myString) 
    sqlite3_bind_text(statement,1,[myString UTF8String],-1,SQLITE_TRANSIENT); 
else 
    sqlite3_bind_null(statement,1); 
+0

道格請看看這個類似的問題:http://stackoverflow.com/questions/14462951/ios-sqlite3-statement-coalesce-causing-memory-problems – abbood 2013-01-23 08:14:14