美文网首页
FMDatabaseQueue

FMDatabaseQueue

作者: 可爱的活火山 | 来源:发表于2017-06-03 10:36 被阅读203次

首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inDatabase方法中。 在闭包中操作数据库,而不直接参与FMDatabase的管理。

FMDatabaseQueue解决这个问题的思路是:创建一个队列,然后将放入队列的block顺序执行,这样避免了多线程同时访问数据库;

如果是多线程各创建FMDatabaseQueue的实例,其实有多个队列,还是存在数据库竞争的问题,和用FMDatabase时是一样的;

让每个线程使用同一个Queue实例,问题就解决了!

@property (nonatomic, strong) FMDatabaseQueue *commonQueue;

NSString *commonQueuePath = [NSFileManager pathDBCommon];

self.commonQueue = [FMDatabaseQueue databaseQueueWithPath:commonQueuePath];

重点是这个!!!

- (void)excuteQuerySQL:(NSString*)sqlStr resultBlock:(void(^)(FMResultSet * rsSet))resultBlock

{

      if (self.dbQueue) {

         [_dbQueue inDatabase:^(FMDatabase *db) {

         FMResultSet * retSet = [db executeQuery:sqlStr];

         if (resultBlock) {

             resultBlock(retSet);

         }

      }];

   }

相关文章

  • FMDatabaseQueue

    首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inData...

  • FMDataBaseQueue

    FMDataBaseQueue 是线程安全的,可以在多线程中放心使用 FMDatabaseQueue *queue...

  • FMDatabaseQueue

    首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inData...

  • FMDB 修改FMdatabase.m文件,不使用FMData

    众所周知,要使FMDB支持多线程操作,需要使用FMDatabaseQueue,觉得FMDatabaseQueue这...

  • FMDB

    为了多线程操作数据库安全,FMDB使用了FMDatabaseQueue,使用FMDatabaseQueue很简单,...

  • iOS下FMDB的多线程操作(二)

    上一篇记录不使用FMDatabaseQueue来使用多线程,这一篇记录一下使用FMDatabaseQueue的方式...

  • FMDB简单使用

    FMDB简单使用 FMDatabase的使用 FMDatabaseQueue的使用 使用FMDatabaseQue...

  • FMDB详解(v2.7)

    包含仨主要类:FMDatabase、FMResultSet、FMDatabaseQueue 创建数据库 FMDat...

  • FMDB基于FMDatabaseQueue封装

    创建数据库和数据表的工具类 插入数据 更新数据 删除 、更新 都需要指定查询条件即:WHERE id = ? 查询

  • FMDB源码系列(一)

    FMDB有FMDatabase、FMDatabaseQueue、FMResultSet这三个重量级的类。 FMDa...

网友评论

      本文标题:FMDatabaseQueue

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