SQLite 在 iOS 中的使用

在iOS开发中,系统已原生支持SQLite数据库的使用。然而直接使用iOS系统提供的操作SQLite接口,过程比较繁琐,所以在开发中,一般都会使用一些优秀的第三方开源库,比如FMDB。随着时间的推移,业界也新出现了更好的开源库,如realm。现阶段FMDB已能满足项目的实际需要,在这里主要讲的是,基于FMDB封装的两个开源内容的而是用。

一、YTKKeyValueStore

图1.0 YTKKeyValueStore存储形式

图 1.0 为使用 YTKKeyValueStore 时在数据库中存储结构,字段内容已经固定,提供给开发者变更的内容为 json 字段,可操作性不大。如果对于数据量少,数据查找条件单一,可以考虑使用 YTKKeyValueStore 进行数据存储开发。
YTKKeyValueStore 更多的是体现一种键值对的存储,如果对于需要存储的数据仅仅是简单的数字、字符串内容,使用 iOS 系统中的 NSUserDefaults 进行键值对的存储,则会更加简便
二、DBModel
图2.0 DBModel
JKDBHelper是为JKDModel服务,开发者使用JKDBModel即可
1、JKDBModel的使用
图 2.1 JKDBModel 的使用示例

如图所示,JKDBModel 为 NSObject 类,定义了数据库的增、删、改、查操作方法。开发者通过继承 JKDBModel 进行数据库的操作使用。继承于 JKDBModel 的子类,自定义需要存储字段以及可以封装更适用于本模型数据查找接口。 JDKModel 以模型(Model)的名字为存储的表名,一个模型对应一个表,如 QueryRecordInfo 为存储该数据类型表的名称。以模型为单位,进行内容的存储,存储的字段根据模型结构的变化而变化,而不是像YTKKeyValueStore 一样,字段内容固定。这就很方便我们增加一些方便查询的字段内容。
图 2.2 JKDBModel 存储形式
2、DBModel的使用流程
图2.3JKDBModel使用过程
在 2.3 图中,自定义数据库操作接口为重要的一环,如JKDBModel 在查找数据时,需要输入查询的语句,如下图所示
图 2.4 JKDBModel 查找数据示例
通过查找指定的字段内容,得到自己想要的数据
3、JKDBModel的注意事项
3.1存储数据类型注意
JKDBModel暂时只支持五中数据类型,如下
在这里插入图片描述
模型中的为对象的字段类型,全部被当做字符串(TEXT)内容进行存储。如果字段为数组类型,也会被当做是字符串来存储,这在实际使用中,造成麻烦。如果数组存储的内容为其他的模型类型,则在获取数据库数据时,得到的仅仅是一个字符串,而不是模型结构的数据。
这需要在进行存储前,将数组内容转成 JSONString 的形式进行存储,而在获取数据的时候,将JSONString数据进行解析。
图 2.5 JKDBModel 数组数据储存的处理示例
图2.6 将获取得到JSONString 进行解析还原数据示例
3.2更新数据内容注意
图2.7 JKDBModel 更新或存储的实现示例
JKDBModel 更新某条数据,是根据该条数据的主键(PK)值进行。在进行某条数据更新前,先进行判断该数据是否存在,如果存在,则需要将存在的 pk 值获取得到,赋值给即将要更新模型的pk字段
三、扩展阅读
JKDBModel 链接地址
https://github.com/Halley-Wong/JKDBModel

FMDB 使用方法 – 熟悉 FMDB 的使用过程
http://www.jianshu.com/p/d60ee3c85d63

SQL 教程 - 学习一些简单的命令语句
http://www.w3school.com.cn/sql/index.asp