+ (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,此后不会降低。为什么会这样呢?您可以提出任何优化建议吗?

最佳答案

仅当sqlite3_open调用失败时,此代码才会关闭数据库。

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

关于ios - 查询sqlite数据库时内存分配不断增加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24756331/

10-13 08:52