+ (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/