美文网首页
iOS 第三方使用之FMDB

iOS 第三方使用之FMDB

作者: CarsonChen | 来源:发表于2016-04-27 22:29 被阅读214次

    一. FMDB简介

    FMDB是对libsqlite3框架进行的封装,使用步骤与SQLite相似,并进行了多线程并发处理,所以线程是安全的.
    FMDB是OC语言封装的,不能实现跨平台使用.
    FMDB中关键的类:
    FMDatabase:一个单独该类的对象,为一个数据库.
    FMResultSet:使用SQL语句查询返回的结果集.
    FMDatabaseQueue:用于多线程中执行多个查询或更新,线程是安全的.

    二. FMDB创建数据库与表

    使用FMDB创建Database的步骤:拼接一个数据库的地址,一般的存放在沙盒中的Documents文件夹下.

    三. FMDB的增,删,查,改

    #pragma mark -- 增,删,改 (非事务操作)
    - (void)notTransction:(NSString *)sql {
        // 任务队列
        FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:[self sqlPath]];
        // 将任务添加到队列中
        [queue inDatabase:^(FMDatabase *db) {
            BOOL isOK = [self.db executeUpdate:sql];
            if (isOK) {
                NSLog(@"操作成功!");
            } else {
                NSLog(@"操作失败!");
            }
        }];
    }
    
    #pragma mark -- 增,删,改 (非事务操作)
    - (void)transition:(NSString *)sql {
        // 任务队列
        FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:[self sqlPath]];
        // 将任务添加到队列中
        [queue inDatabase:^(FMDatabase *db) {
            // 开启事务
            [db beginTransaction];
            BOOL isOK = [self.db executeUpdate:sql];
            if (isOK) {
                NSLog(@"操作成功!");
            } else {
                NSLog(@"操作失败!");
            }
            // 提交事务
            [db commit];
        }];
    
    }
    

    事务的方式能加快操作数据库的允许速度.

    查询操作

    #pragma mark -- 查询
    - (NSMutableArray *)selectMethod:(NSString *)sql {
        // 打开数据库
        [self openOrCreateSQLite];
        // 查询返回结果集对象
        FMResultSet *resultSet = [self.db executeQuery:sql];
        // 遍历记录,将记录转为字典,存储在可变数组中.
        NSMutableArray *array = [[NSMutableArray alloc] init];
        while ([resultSet next]) {
            // 将每一条记录转化成为字典
            NSDictionary *dict = [resultSet resultDictionary];
            [array addObject:dict];
        }
        // 释放返回结果集对象
        [resultSet close];
        // 关闭数据库
        [self closeSQLite];
        return array;
    }
    

    增删查改的sql语句可以运用?参数占位,绑定参数.

    四. FMDB的多线程使用操作

    使用FMDB的查询操作是在子线程中完成的,需要手动的将其放入到子线程中进行操作,推荐使用GCD的全局队列的方式在查询数据的时候放入到子线程中,获取完数据后,回到主线程,进行对UI的刷新操作.

    相关文章

      网友评论

          本文标题:iOS 第三方使用之FMDB

          本文链接:https://www.haomeiwen.com/subject/xvwcrttx.html