美文网首页关于iOS 那点事FMDBiOS多线程
FMDB 修改FMdatabase.m文件,不使用FMData

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

作者: Lonely__M | 来源:发表于2015-11-19 15:10 被阅读443次

众所周知,要使FMDB支持多线程操作,需要使用FMDatabaseQueue,
觉得FMDatabaseQueue这种block回调方式使用不方便的可以用以下方式实现数据库单连接支持多线程操作:

  • 修改FMDatabase.m文件 open 方法

- (BOOL)open {
    if (_db) {
        return YES;
    }
    
/** 添加以下两句*/
     /** add by xxx at 20151119 begin*/
    sqlite3_shutdown();
    
    sqlite3_config(SQLITE_CONFIG_SERIALIZED);
    
    /** add by xxx at 20151119 end*/
    
    int err = sqlite3_open([self sqlitePath], &_db );
    if(err != SQLITE_OK) {
        NSLog(@"error opening!: %d", err);
        return NO;
    }
    
    if (_maxBusyRetryTimeInterval > 0.0) {
        // set the handler
        [self setMaxBusyRetryTimeInterval:_maxBusyRetryTimeInterval];
    }
    
    
    return YES;
}
  • 注释 FMDatabase.m文件 中出现if (_isExecutingStatement)的地方,总共有4

- (sqlite_int64)lastInsertRowId {
    
//    if (_isExecutingStatement) {
//        [self warnInUse];
//        return NO;
//    }
    
    _isExecutingStatement = YES;
    
    sqlite_int64 ret = sqlite3_last_insert_rowid(_db);
    
    _isExecutingStatement = NO;
    
    return ret;
}

- (int)changes {
//    if (_isExecutingStatement) {
//        [self warnInUse];
//        return 0;
//    }
    
    _isExecutingStatement = YES;
    
    int ret = sqlite3_changes(_db);
    
    _isExecutingStatement = NO;
    
    return ret;
}

....

现在可以直接使用FMdatabase进行多线程操作了,不必使用FMDatabaseQueue这种block回调方式,代码简洁又易懂。

相关文章

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

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

  • FMDB数据库加密/解密操作

    一:FMDB数据库加密 1.导入 在FMDatabase.m文件中找到下面两个函数: 3.在上面的两个函数中找到并...

  • iOS开发之FMDB的使用

    要使用FMDB,先要添加库文件libsqlite3.tbd FMDB的介绍 FMDB是iOS平台的SQLite数据...

  • 使用FMDB遇到的错误:_OBJC_CLASS_$_FMData

    _OBJC_CLASS_$_FMDatabase: 今天在使用FMDB这个库的时候,遇到了上边这个让人很头疼的问题...

  • iOS FMDB增删改查

    FMDB是一款简洁、易用的封装库,下面简单介绍下FMDB的使用: 在FMDB下载文件后,导入工程中,并使用 lib...

  • iOS FMDB的使用

    FMDB在项目中的使用 一. 首先导入FMDB三方库:在podfile 文件中添 pod 'FMDB' 然后在...

  • FMDB使用事项

    FMDB使用事项 1.创建数据库 引用 FMDB文件,我下载的这个FMDB中所有的引用已经集成在这一个文件中了 首...

  • 拿走即用之FMDB

    FMDB 框架使用(作者离职,求一份工作) 将 fmdb 文件夹拖入项目 建立桥接文件 将 Swift exten...

  • FMDB常用API简述及多线程单例类封装

    FMDB的简单使用 导入头文件 #import "FMDB.h" 全局的静态数据库对象initialize// 这...

  • FMDB

    先导入fmdb库修改跟视图在LoadData.h文件中 LoadData.m中 在ViewController.m...

网友评论

    本文标题:FMDB 修改FMdatabase.m文件,不使用FMData

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