2011-04-04 149 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