iOS开发之FMDB

前言

      SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK 很早就支持了 SQLite,在使用时,只须要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件便可。可是,原生的 SQLite API 在使用上至关不友好,在使用时,很是不便。因而,开源社区中就出现了一系列将 SQLite API 进行封装的库,而 FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者。FMDB 同时兼容 ARC 和非 ARC 工程,会自动根据工程配置来调整相关的内存管理代码。并且他提供了多线程安全的数据库操做方法,有效地防止数据混乱。html

     FMDB是将sqlite封装处理的,因此使用FMDB以前也必须导入libsqlite3.dylib框架。git

FMDB经常使用类github

FMDatabase :          一个单一的SQLite数据库,用于执行SQL语句。sql

FMResultSet :          执行查询一个FMDatabase结果集。    数据库

FMDatabaseQueue :在多个线程来执行查询和更新时会使用这个类。安全


建立数据库

 

NSString*path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];多线程

path = [path stringByAppendingString:@"testDB.sqlite"];框架

db = [FMDatabase databaseWithPath:path];  //指定路径建立一个数据库 dB是一个全局变量线程

一、testDB.sqlite不存在,系统会在路径下自动建立一个数据库。若在该路径以前存在这样的数据库,不会重复建立。orm

二、若是path为@"",系统会在一个临时的目录(并非沙盒中的temp文件,这个临时目录是系统自动分配的)本身建立一个数据库,数据库断开链接后会自动删除。

三、若是path为nil,系统会在内存中建立一个数据库,数据库会在关闭后被销毁。

在数据库中建表

 


数据库中建立表

0、数据库操做前记得打开,操做结束后记得关闭

一、在FMDB中,除查询之外的全部操做,都称为“更新”。例如,create、drop、insert、update、delete等都采用executeUpdate来进行操做,select采用executeQuery操做。

二、executeUpdate方法返回一个BOOL值来代表是否操做成功。executeQuery方法返回一个FMResultSet(结果集),存放查询到的结果。

在表中插入数据

 


表中插入数据

一、?作占位符的话,传进来的值必须是对象类型。

二、FMDB的更新方法有不少,有兴趣的朋友能够都试试。

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

二、sqlite的增删改(没有查),跟上面的格式其实都是同样的。惟一的不一样的就是sqlite语句。sqlite语句不会写的直接百度搜索便可。

在表中查询数据

 


查询数据

一、FMResultSet提供了不少方法来得到所需的格式的值:stringForColumn  doubleForColumn boolForColumn等。不只能经过列名来取数据,还能经过列的下标取数据。

二、FMDB的查询方法也有不少,一样能够试试

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

相关文章
相关标签/搜索