zoukankan      html  css  js  c++  java
  • FMDB -- 数据太多insert数据闪退,我用了事物处理问题!

    先上我查询的资料

    1.https://www.jianshu.com/p/df83376749db
    
    //这个是重点
    2.https://blog.csdn.net/weixin_34049032/article/details/91471161

    我的情况是

      2万行json数据,插入数据时候闪退,内存开销太大导致的(6p手机debug)。从78-447-780-闪退!!!

      然后用事物处理,思路就是:
      1.把之前for循环的sql语句放进数组中,

      2.使用fmdb事物提交数据

      

     /// fmdb 事物 操作

        /// @param sqlArray 数据sql语句

        /// @param tableName 数据库名字 -- 没有实际用到


    +(void)inTransaction:(NSArray <NSString *>*)sqlArray table:tableName{ if (sqlArray.count == 0) { NSLog(@"-------------------------------------------------------------------------------- 数据为空"); return; } NSLog(@"table 名字 -----------------------------------------------------------------------------------%@",tableName); FMDatabaseQueue *dataBaseQueue = [XYDatabase shareDB].databaseQueue; [dataBaseQueue inTransaction:^(FMDatabase *db, BOOL *rollback) { NSLog(@"开始插入数据 -- %@",tableName); BOOL iserror = NO; for (int i = 0; i < sqlArray.count; i++) { iserror = [db executeUpdate:sqlArray[i]]; } if (iserror) { NSLog(@"所有操作成功 -- %@",tableName); }else{ NSLog(@"所有操作失败 -- %@",tableName); } }]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // }); }

      

    ps:

    fmdb 我也是只会用,回头看看源码解析(能力一般,水平有限,希望尽快看得懂它们)。分享出来我的理解!!!2020-06-15

  • 相关阅读:
    人为什么会生气 --- 答案是什么?
    职场中我们常犯的8个错误
    职场上最常见的20条错误,犯三条就够致命啦
    C语言,基于单向链表实现,变长动态数据缓冲区(线程安全) ---- 类似java的StringBuffer --- 亲测OK
    门限签名
    基于RSA的实用门限签名算法
    图解密码技术(第3版)-第4章
    各种加密算法比较
    密码那点事儿
    数字签名,我有疑问。
  • 原文地址:https://www.cnblogs.com/tom2015010203/p/13131343.html
Copyright © 2011-2022 走看看