美文网首页
FMDB源码阅读笔记

FMDB源码阅读笔记

作者: 小呀小苹果呀 | 来源:发表于2018-05-31 19:09 被阅读0次

    在iOS关于本地数据库的开发过程中,FMDB是一个被广泛使用的优秀的第三方框架。最近有时间又重读和学习了FMDB的源码,在这里记录一下源码的设计思路,其使用方法这里不再赘述。

    一. 综述

    • FMResultSet
      表示数据库执行查询语句后的结果集。
    • FMDataBase
      表示一个单独的SQLite数据库操作实例,通过它可以对数据库进行增删查改等操作。
    • FMDataBaseAdditions
      扩展 FMDataBase的功能,新增对查询结果只返回单个值的方法进行简化,校验SQL的功能等。
    • FMDatabaseQueue
      使用串行队列,对多线程的数据库操作进行了支持。
    • FMDatabasePool
      使用任务池的形式,对多线程的操作提供支持。

    二.FMResultSet

    image.png

    其中一个比较重要的方法最主要的处理就是,将SQLite中对查询的结果按照index对应的结果封装为字典, 以表的字段名为key,相对应的数据为value。

    - (NSDictionary*)resultDictionary {
        
        NSUInteger num_cols = (NSUInteger)sqlite3_data_count([_statement statement]);
        
        if (num_cols > 0) {
            NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:num_cols];
            
            int columnCount = sqlite3_column_count([_statement statement]);
            
            int columnIdx = 0;
            for (columnIdx = 0; columnIdx < columnCount; columnIdx++) {
                
                NSString *columnName = [NSString stringWithUTF8String:sqlite3_column_name([_statement statement], columnIdx)];
                id objectValue = [self objectForColumnIndex:columnIdx];
                [dict setObject:objectValue forKey:columnName];
            }
            
            return dict;
        }
        else {
            NSLog(@"Warning: There seem to be no columns in this set.");
        }
        
        return nil;
    }
    

    三.FMDataBase

    四.FMDataBaseAdditions

    五.FMDatabaseQueue

    六.FMDatabasePool

    相关文章

      网友评论

          本文标题:FMDB源码阅读笔记

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