Open Database (SQLite)
///Open Database+(BOOL) opendatabase{_tydatabase=[[Fmdatabase alloc]initwithpath:[self DatabasePath]]; if([_tydatabase Open]) {returnYES; } returnNO;}///Database Path+ (NSString *) databasepath{NSString*documentpath =[Nssearchpathfordirectoriesindomains (NSDocumentDirectory, Nsuserdomainmask, YES) lastobject]; NSString*datapath = [Documentpath stringbyappendingpathcomponent:@"TY. SQLite"]; Nsfilemanager*filem =[Nsfilemanager Defaultmanager]; if(![Filem Fileexistsatpath:datapath]) {NSString*filepath = [[NSBundle mainbundle] Pathforresource:@"TY"OfType:@"SQLite"]; [Filem Copyitematpath:filepath Topath:datapath Error:nil]; } NSLog (@"%@", DataPath); returnDataPath; }
Transaction
/** Transaction Arraysql:sql statement Array*/- (void) BeginTransaction: (Nsarray *) Arraysql; { ////static Fmdatabase *_tydatabase = nil;BOOL isopen=[_tydatabase Open]; if(!IsOpen) {NSLog (@"failed to open database! "); return; } ///Start things[_tydatabase BeginTransaction]; BOOL Isrollback=NO; @try { for(inti =0; i<arraysql.count; i++) {BOOL result=[_tydatabase Executeupdate:arraysql[i]]; if(!result) {NSLog (@"operation failed "%d" = = sql:%@", I,arraysql[i]); } } } @catch(NSException *exception) {Isrollback=YES; ///rolling back[_tydatabase rollback]; } @finally { if(!isrollback) { ///Submit[_tydatabase commit]; }} [_tydatabase close];}
Multi-threaded transactions
/** Multi-threaded Transaction arraysql:sql statement array*/+ (void) Begintransactiont: (Nsarray *) arraysql{Fmdatabasequeue*databasequeue =[Fmdatabasequeue databasequeuewithpath:[self DatabasePath]; [Databasequeue intransaction:^ (Fmdatabase *db, BOOL *rollback) {BOOL result=NO; for(inti =0; i < Arraysql.count; i++) {result=[_tydatabase Executeupdate:arraysql[i]]; } if(Result) {NSLog (@"Success"); } }];}
Ios-fmdb Transaction "Batch update Database"