如何管理数据库中的记忆问题

时间:2016-07-22 11:38:15

标签: ios

我正在使用Sqlite数据库...在那里我使用了200多个查询来获取并插入和更新值..当我在某些案例数据库中重复调用200方法时没有打开...             我不知道为什么我会遇到这个问题......如何克服这个问题

  static NSString *SQLITE_FILE_NAME = @"TNCA_DATABASE.sqlite";

    //Copy database to application document
    + (void) copyDatabaseIfNotExist{

        //Using NSFileManager we can perform many file system operations.
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSError *error;


        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];
        NSString *dbPath = [documentsDir stringByAppendingPathComponent:SQLITE_FILE_NAME];

        //NSString *dbPath = [self getDBPath];
        BOOL success = [fileManager fileExistsAtPath:dbPath];

        if(!success) {//If file not exist
            NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:SQLITE_FILE_NAME];
            success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];

            if (!success)
                NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
        }
    }


    +(NSString *) getDBPath
    {
        [self copyDatabaseIfNotExist];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];
        return [documentsDir stringByAppendingPathComponent:SQLITE_FILE_NAME];
    }





    //DBManager.h
    //UpdateScoreCard
    //DBManager.M
    //UpdateScoreCard


    +(NSMutableArray*) SELECTALLUPSC :(NSNumber*) COMPETITIONCODE:(NSNumber*) MATCHCODE:(NSString*) BALLCODE
    {


        NSMutableArray *GetDataArrayUpdateScoreEngine=[[NSMutableArray alloc]init];
        NSString *databasePath = [self getDBPath];
        sqlite3_stmt *statement;
        sqlite3 *dataBase;
        const char *dbPath = [databasePath UTF8String];
        if (sqlite3_open(dbPath, &dataBase) == SQLITE_OK)
        {
            NSString *updateSQL = [NSString stringWithFormat:@"SELECT STRIKERCODE, BOWLERCODE, ISLEGALBALL, OVERNO, BALLNO, RUNS, OVERTHROW, ISFOUR, ISSIX , WIDE, NOBALL, BYES, LEGBYES, PENALTY FROM BALLEVENTS WHERE COMPETITIONCODE = '%@' AND  MATCHCODE = '%@' AND BALLCODE = '%@'",COMPETITIONCODE,MATCHCODE,BALLCODE];
            const char *update_stmt = [updateSQL UTF8String];
            if( sqlite3_prepare_v2(dataBase, update_stmt,-1, &statement, NULL)==SQLITE_OK)
            {
                while(sqlite3_step(statement)==SQLITE_ROW){
                    UpdateScoreEngine *record=[[UpdateScoreEngine alloc]init];

                    record.STRIKERCODE=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
                    record.BOWLERCODE=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
                    record.ISLEGALBALL=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];
                    record.OVERNO=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];

                    record.BALLNO=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 4)];
                    record.RUNS=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 5)];
                    record.OVERTHROW=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 6)];
                    record.ISFOUR=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 7)];

                    record.ISSIX=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 8)];
                    record.WIDE=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 9)];
                    record.NOBALL=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 10)];
                    record.BYES=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 11)];

                    record.LEGBYES=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 12)];
                    record.PENALTY=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 13)];

                    [GetDataArrayUpdateScoreEngine addObject:record];
                }
            }
        }
        sqlite3_finalize(statement);
        sqlite3_close(dataBase);
        return GetDataArrayUpdateScoreEngine;
    }

任何人请给我建议解决这个问题    在此先感谢

0 个答案:

没有答案