在查询sqlite数据库时,内存分配不断增加

时间:2014-07-15 10:53:46

标签: ios sqlite memory-management

+ (BOOL) isExistingTicket:(NSString *)TicketID{
int numrows=0;

sqlite3 *database;

NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:dbName];
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
    NSString *sqlString = [NSString stringWithFormat:@"select count(*) from tickets WHERE  ticket_id = '%@' LIMIT 1",TicketID];
    sqlite3_stmt *selectStatement;


    int returnValue = sqlite3_prepare_v2(database, [sqlString UTF8String], -1, &selectStatement, NULL);


    if (returnValue == SQLITE_OK)
    {
        if(sqlite3_step(selectStatement) == SQLITE_ROW)
        {
            numrows= sqlite3_column_int(selectStatement, 0);
        }
    }


    sqlite3_finalize(selectStatement);
}
else
    sqlite3_close(database);

if (numrows > 0) {
    return YES;
}else{
    return NO;
}

}

大约200比较的数据集是在我的应用程序中使用此查询。当多次调用此函数时,应用程序内存使用量会不断增加。它消耗超过25Mb并且在此之后不会减少。为什么会这样?你能建议任何优化吗?

1 个答案:

答案 0 :(得分:2)

此代码仅在sqlite3_open调用失败时关闭数据库。

sqlite3_close调用移至if的第一个分支。

相关问题