免费开源的iOS开发学习平台

FMDB:1-基本介绍

通常情况下,由于原生的SQLite使用起来非常繁琐,所以我们一般不会直接使用,取而代之的是FMDB。FMDB是使用Objective-C对SQLite的API进行封装的库,使用起来会比直接使用C语言API容易。FMDB使用起来更加面向对象,因而省去了很多麻烦,并且还提供了更方便的方法来拼接SQL语句。

下载与安装

我们可以到github下载最新版本的FMDB,下载的地址为:https://github.com/ccgus/fmdb。点击【Clone or download】即可下载最新版本的FMDB到本地硬盘中。

FMDB的安装推荐使用CocoaPods,使用CocoaPods安装的步骤如下:

  • 打开终端;
  • 使用cd命令导航到工程根目录,执行pod init
  • 在Podfile文件中加上pod 'FMDB'
pod 'FMDB'
  • 在终端中执行pod update, 也可以使用pod update --no-repo-update来加快更新速度。

另外,也可以使用手工方式安装FMDB。解压下载到的fmdb-master.zip文件后,把其中的src/fmdb文件夹添加到工程中。

在需要使用FMDB的类中,导入FMDB的头文件,即可使用其中的方法。

#import "FMDB.h"

FMDB核心类介绍

在FMDB中,提供了3个核心类。

  • FMDatabase:数据库类,所有的SQL语句都需要在数据库中执行;
  • FMResultSet:执行SELECT语句后,查询数据库的结果集。
  • FMDatabaseQueue:如果要在多线程上执行查询和更新,需要用到这个类。

创建数据库

如果需要创建一个数据库库,只需要给FMDatabase类提供一个数据库文件存储的路径即可。在FMDatabase.h文件中,提供了databaseWithPath:方法,用于快速创建一个数据库。

+ (instancetype)databaseWithPath:(NSString*)inPath;

在databaseWithPath:方法中,需要传入数据库所在路径,这个路径有三种情况:

  1. 提供一个系统路径。如果这个路径上没有数据库,则会创建一个新的数据库。
  2. 一个空字符串@""。在沙盒中的temporary文件夹中创建一个数据库,之后在数据库被关闭之后会被删除。
  3. NULL。在内存中创建一个数据库,之后在数据库被关闭之后会被删除。
    NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dbDir = [dirPath objectAtIndex:0];
    NSString *path = [dbDir stringByAppendingPathComponent:@"tmp.db"];
    FMDatabase *db = [FMDatabase databaseWithPath:path];

打开数据库

在使用SQLite数据库之前,都需要打开数据库。由于FMDB是对SQLite的封装,因此在操作数据库之前,也需要提前打开数据库。在FMDB中,提供了open方法用于打开数据库。

if (![db open]) {
    // 数据库打开失败的处理
    db = nil;
    return;
}

关闭数据库

对数据库执行完查询或更新操作后,我们需要调用close方法关闭SQLite数据连接,以便释放系统资源。

[db close];

事务Transactions

事务Transactions是数据库操作的单个工作单位。如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中永久的组成部分。若果事务遇到错误,则必须取消或回滚,所有数据均被更改清除。

FMDatabase通过begin/end语句来开始和提交一个事务。

  • 开始执行事务
- (BOOL)beginTransaction;
  • 提交事务
- (BOOL)commit;
  • 事务回滚
- (BOOL)rollback;