在实际开发很多地方都会用到数据的存储。对于一个开发过实际项目的开发人员来说,对于iOS重各种数据存储方式都会烂熟于心。 例如:Plist文件,文件沙盒,NSUserDefaults,NSKeyedArchiver,coreData,sqlite。对于一些简单数据前面四种基本都可以轻松应付。但是如果数据量很大的关系型数据coreData,sqlite肯定是大家的选择。其中sqlite因为其轻量级和灵活性运用更多。其中一般都会搭配FMDB 进行是用。
FMDB是iOS平台的SQLite数据库框架,它以OC的方式封装了SQLite的C语言API。用起来更加面向对象,省去了很多麻烦、冗余的C语言代码。但是对于初入门的开发人员,入手已是艰难,何必在谈其他。所以我特意对基本的数据库操作进行分装。供大家方便是用。
首先可以使用pod 对fmdb 进行导入,或者直接在github上下载导入工程。
FMDB中重要的类:
FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句
FMResultSet:使用FMDatabase执行查询后的结果集
FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
一.基础应用
1、创建数据库
2、创建数据库表
3.增,删,查,改数据
基本以上包括了所有数据库的基本操作,在实际操作中,还要开发人员关注,各个表里的数据类型,主键等。在对于在操作数据库时候,数据的开关和发生数据错误时候的数据回滚都需要注意
二.高级应用处理
在实际开发中,有时候会牵扯到大量数据同时进行操作,比如十万条数据,甚至百万条数据。还有在操作数据时候的线程安全和多线程操作。这些都需要一个成熟的开发人员在开发中予以处理。
1.fmdb 多事务处理
设想如果现在有10000条数据,需要同时插入数据库。一次插入数据库的请求是这样的,打开数据库,提交数据,关闭数据库。如果要插入10000条那么我们就需要进行一万次这样的操作,那么这样的耗时是巨大的。基本上你的应用差不多可以挂啦。
但是如果我们这样,我们打开数据库,然后批量提交数据,提交完之后一次提交数据,可以想像这样的处理耗时和上面的笨方法比几乎可以忽略不计。
2、FMDatabaseQueue
FMDatabase这个类是线程不安全的,如果在多个线程中同时使用一个FMDatabase实例,会造成数据混乱等问题。为了保证线程安全,FMDB提供方便快捷的FMDatabaseQueue类。
3、FMDatabaseQueue与多线程(GCD)
FMDatabaseQueue 后台会建立系列化的G-C-D队列,并执行 你传给G-C-D队列的块。这意味着 你从多线程同时调用调用方法,GDC也会按它接收的块的顺序来执行。谁也不会吵到谁的脚,每个人都幸福。