我正在使用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;
}
任何人请给我建议解决这个问题 在此先感谢