FMDB的基本使用
什么是FMDB
很简单,一个iOS中SQLite API的封装库。
- 是对libsqlite3库的封装,使用起来简洁、高效,没有原来的一大堆晦涩难懂、影响开发效率的C语句,更加面向对象
- 非常的轻量化、灵活
- 对于多线程的并发操作进行了处理,是线程安全的(重要特性之一)
- 因为它是OC语言封装的,只能在ios开发的时候使用,所以在实现跨平台操作的时候存在局限性
FMDB重要(常用)类
- FMDatabase:一个FMDatabase对象就代表一个单独的SQLite数据库(注意并不是表),用来执行SQL语句
- FMResultSet:使用FMDatabase执行查询后的结果集
- FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的
FMDB的使用步骤详解
1.准备步骤(基础操作)
1.项目中导入FMDB Github地址
- Cocoapods导入(推荐),如果你还没有使用Cocoapods,就赶紧学起来吧
- 手动下载工程,并导入
2.导入libsqlite3框架(一般情况下默认是导入的,所以一般都不用做这一步),细心的朋友可能会发现我们的库中还有一个libsqlite3.0框架那么它们俩有什么区别呢
3.在需要用到FMDB的控制器(或模型)地方 import FMDatabase.h
或 #import <FMDB/FMDB.h>
4.新建一个继承自NSObject的对象,这里我们使用student,接下来数据库中增删改查的对象就用stduent进行操作示例
5.你已经跃跃欲试了吧,别急,本地的.sqlite你现在还无法查看, 现在推荐App Store里面自带的Datum Free(免费版)了,使用起来很方便
2.数据库的创建
1 |
|
这里我们可以打开_docPath的路径,可以看到名为“student.sqlite”的数据库已经创建了
3.表的创建
1 |
|
4.添加数据
1 |
|
多插入几次后,我们可以看到t_student表中添加了多条数据
5.删除数据
1 |
|
6.修改数据
1 |
|
查看sqlite,可以看到测试名字2的姓名已经被修改了
7.查询数据
1 |
|
执行查询之后控制台的打印,可以看到打印出了目前的所有数据
8.表的删除
1 |
|
执行之后,刷新SQLite,可以看到t_student表已经被删除了
9.FMDB的事务
- 事务定义:
事务(Transaction)是并发操作的基本单位,是指单个逻辑工作单位执行的一系列操作序列,这些操作要不都成功,要不就不成功,事务是数据库维护数据一致性的单位,在每个事务结束时,都能保证数据一致性与准确性,通常事务跟程序是两个不同的概念,一个程序中包含多个事务,事务主要解决并发条件下操作数据库,保证数据 - 事务特征:
原子性(Atomic):事务中包含的一系列操作被看作一个逻辑单元,这个逻辑单元要不全部成功,要不全部失败
一致性(Consistency):事务中包含的一系列操作,只有合法的数据被写入数据库,一些列操作失败之后,事务会滚到最初创建事务的状态
隔离性(Isolation):对数据进行修改的多个事务之间是隔离的,每个事务是独立的,不应该以任何方式来影响其他事务
持久性(Durability)事务完成之后,事务处理的结果必须得到固化,它对于系统的影响是永久的,该修改即使出现系统固执也将一直保留,真实的修改了数据库 - 事务语句:
1 |
|
开启事务 :beginTransaction
回滚事务:rollback
提交事务:commit
- 事务代码
用事务处理一系列数据库操作,省时效率高
1 |
|
未使用事务执行一系列操作
1 |
|
比较结果如下:
在事务中执行插入任务 所需要的时间 = 0.426221
不在事务中执行插入任务 所需要的时间 = 0.790417