iOS开发FMDB使用

424 阅读1分钟

1.创建数据库

    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES)firstObject]stringByAppendingPathComponent:@"db.sqlite"];
    FMDatabase *db = [FMDatabase databaseWithPath:filePath];

2.创建表

    if ([db open]) {
        BOOL result = [db executeUpdate:@"CREATE TABLE IF NOT EXISTS Person (pid integer PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age integer NOT NULL)"];
        if (result) {
            NSLog(@"table create success");
            
        }else{
            NSLog(@"table create fail");
        }
    }else{
        NSLog(@"fail");
    }

3.增

-(void)insertWithdb:(FMDatabase *)db table:(NSString *)table
{
    NSString *name = [NSString stringWithFormat:@"jack-%d", arc4random_uniform(100)];
    NSString *sql = [NSString stringWithFormat:@"INSERT INTO %@ (name, age) VALUES ('%@', %d);",table,name,arc4random_uniform(40)];
    BOOL result = [db executeUpdate:sql];
    if (result) {
        NSLog(@"table insert success");
    }else{
        NSLog(@"table insert fail");
    }
    [db close];
}

4.删

-(void)deleteWithdb:(FMDatabase *)db table:(NSString *)table
{
    NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE pid = 1",table];
    BOOL result = [db executeUpdate:sql];
    if (result) {
        NSLog(@"table delete success");
    }else{
        NSLog(@"table delete fail");
    }
    [db close];
}

5.改

-(void)updateWithdb:(FMDatabase *)db table:(NSString *)table
{
    NSString *sql = [NSString stringWithFormat:@"UPDATE %@ SET name = 'ZHANG' WHERE pid = 3",table];
    BOOL result = [db executeUpdate:sql];
    if (result) {
        NSLog(@"table update success");
    }else{
        NSLog(@"table update fail");
    }
    [db close];
}

6.查

-(void)queryWithdb:(FMDatabase *)db table:(NSString *)table
{
    NSString *sql = [NSString stringWithFormat:@"SELECT * FROM %@",table];
    FMResultSet *set = [db executeQuery:sql];
    while ([set next]) {
        NSLog(@"%@ %@",[set stringForColumn:@"name"],[set stringForColumn:@"age"]);
    }
    [db close];
}

7.FMDatabaseQueue

    //1.事物队列
    FMDatabaseQueue *dbQueue = [FMDatabaseQueue databaseQueueWithPath:filePath];
    
    [dbQueue inTransaction:^(FMDatabase * _Nonnull db, BOOL * _Nonnull rollback) {
        for (int i = 0; i<100; i++) {
            [db open];
            [self insertWithdb:db table:@"Person"];
        }
    }];
    
    //2.非事物队列
     [dbQueue inDatabase:^(FMDatabase * _Nonnull db) {
        NSLog(@"%@",db);
        
        for (int i = 0; i<100; i++) {
            [db open];
            [self insertWithdb:db table:@"Person"];
        }
    }];