FMDB------2:マルチスレッド使用.
2092 ワード
#import
- (void)viewDidLoad {
[super viewDidLoad];
//
[self openDB];
// ,
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self threadNotTransaction];
});
}
- (NSString*)dbPath{
NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *docPath = [dbPath stringByAppendingPathComponent:@"test.sqlite"];
NSLog(@"%@",dbPath);
return docPath;
}
- (void)openDB{
FMDatabase *database = [FMDatabase databaseWithPath:[self dbPath]];
/**
* , , .
*/
if([database open]){
BOOL isSuccess = [database executeUpdate:@"create table if not exists stu (name text)"];
if (isSuccess) {
NSLog(@" ");
}else{
NSLog(@" ");
}
}else{
NSLog(@" ");
}
}
- (void)threadNotTransaction{
//
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:[self dbPath]];
//
[queue inDatabase:^(FMDatabase *db) {
[db beginTransaction];// . . , , .
BOOL isError = NO;
int temp = -1;
for (int i = 0 ; i < 10000; i++) {
isError = [db executeUpdate:@"insert into stu values (?)",@(i)];
if (!isError) { // isError == NO.
if(temp == -1){
temp = i;
}
}
}
if (isError) {
NSLog(@" ");
}else{
NSLog(@" --%d",temp);
}
//
[db commit];// : , .
}];
}