0

我的日志中出现了两次崩溃,使用以下代码插入到我的 SQLite DB 中 - 该代码在大多数情况下都能完美运行,但显然存在导致崩溃的错误。

它在带有 EXC_BAD_ACCESS 的 sqlite3_last_insert_rowid 或 sqlite3_close 上崩溃(我持有对 SMSDatabase 的引用,并且它处于单例中,不确定为什么会被释放)和 SIGABRT(内存问题?)

- (NSInteger)query:(NSString *)query {

    NSInteger lastRowID = 0;

        if (sqlite3_open([self.databasePath UTF8String], &smsDatabase) == SQLITE_OK)
        {                
            sqlite3_stmt *statement = nil;

            const char *sql = [query UTF8String];

            if (sqlite3_prepare_v2(smsDatabase, sql, -1, &statement, NULL) == SQLITE_OK) {

                if (sqlite3_step(statement) == SQLITE_DONE)
                {
                    lastRowID = sqlite3_last_insert_rowid(smsDatabase);
                }
            }

            sqlite3_finalize(statement);
        }

    sqlite3_close(smsDatabase);

    return lastRowID;
}

我哪里错了?

4

1 回答 1

0

sqlite3_close(smsDatabase); - 这不是在您的 if 语句之外,这意味着您正在关闭一个可能从未打开过的数据库吗?

于 2013-09-30T17:57:04.497 回答