【问题标题】:sqlite 3 "SQL error 'out of memory' (7)" objcsqlite 3“SQL错误'内存不足'(7)”objc
【发布时间】:2013-08-21 22:36:15
【问题描述】:

您好,谁能指出我做错了什么?错误是这样的:

SQL error 'out of memory' (7)



  - (NSArray *)RecipeInfo
{    
    NSMutableArray *retval = [[NSMutableArray alloc] init];
    NSString *query = [NSString stringWithFormat:@"SELECT key, name FROM recipes WHERE type = \'%@\'", self.RecipeType];

NSLog(query);

sqlite3_stmt *statement;

if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, NULL) != SQLITE_OK)
{
    NSLog(@"[SQLITE] Error when preparing query!");
    NSLog(@"%s SQL error '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(_database), sqlite3_errcode(_database));

    }
    else
    {
        while (sqlite3_step(statement) == SQLITE_ROW)
        {
            int uniqueId = sqlite3_column_int(statement, 0);
            char *nameChars = (char *) sqlite3_column_text(statement, 1);
            NSString *name = [[NSString alloc] initWithUTF8String:nameChars];
            RecipeInfo *info = [[RecipeInfo alloc] initWithUniqueId:uniqueId name:name];
            [retval addObject:info];
        }

        sqlite3_finalize(statement);
    }
return retval;
}

sql在我使用的数据库管理环境中执行得很好,这与我使用sql api的方式有关,有人能发现什么问题吗?

【问题讨论】:

  • 哪一步内存不足?
  • (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, NULL) 它甚至没有进入循环,if 语句命中并打印错误消息(第二个 NSLOG)

标签: ios objective-c sqlite


【解决方案1】:

如果您忽略了打开数据库并且指针是NULL(或者,正如rmaddy 所说,出于任何原因,如果它是NULL),您可能会得到这个错误,令人困惑。在您打开数据库的位置放置一条日志语句,并确保它成功并且您有一个有效的sqlite3 指针。

【讨论】:

  • 或者如果使用的数据库引用恰好是NULL。
  • 你对这条评论的贡献救了我@rmaddy!
猜你喜欢
  • 2011-08-18
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2012-11-23
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多