首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqlite准备语句

问Sqlite准备语句
EN

Stack Overflow用户
提问于 2012-06-15 15:01:00
回答 1查看 500关注 0票数 0

我的桌子上有12根柱子。最后两列是新添加的。我使用sqlite3数据库。如果对除最后创建的两个新列之外的任何其他列使用where子句,则将创建数据库并正确执行查询。最后两列返回空字符串,这使得应用程序崩溃时抛出了终止应用程序,原因是'NSInvalidArgumentException',原因:' *+NSString stringWithUTF8String::NULL cString'**

当在SQL中执行查询时,我可以检索最后两列。我想我的准备陈述有什么地方不对劲。

代码语言:javascript
复制
    NSString *query = @"select * from tableName where lastColumn = 'Value'";
    const char *sqlStatement = [query UTF8String];
sqlite3_stmt *compiledStatement;
    NSLog(@"could not prepare statement: %s\n", sqlite3_errmsg(database));

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
    }

请帮帮我。我完全不知道最后两列的去向..。:)

EN

回答 1

Stack Overflow用户

发布于 2012-06-15 19:53:38

将NULL传递给stringWithUTF8String: method,这是不允许的。在实例化NSString对象之前,您应该检查从sqlite获得的值。

代码语言:javascript
复制
const char *ctext = sqlite3_column_text(compiledStatement, 2);
if (ctext) {
    text = [NSString stringWithUTF8String:ctext];
}

添加新列时,所有现有行中的此列的值设置为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11053232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档