iOS 第三方使用之FMDB

2016-04-27  本文已影响214人  CarsonChen

一. 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的刷新操作.

上一篇下一篇

猜你喜欢

热点阅读