这里贴出FMDB的Github地址
使用该框架时,要导入libsqlite3.dylib
库
使用CocoaPods安装:
pod 'FMDB'
# pod 'FMDB/FTS' # FMDB with FTS
# pod 'FMDB/standalone' # FMDB with latest SQLite amalgamation source
# pod 'FMDB/standalone/FTS' # FMDB with latest SQLite amalgamation source and FTS
# pod 'FMDB/SQLCipher' # FMDB with SQLCipher
使用方法:
在FMDB中有三个主要的类:
FMDatabase
:代表一个单独的SQLite数据库,使用执行SQL语句FMResultSet
:代表了对数据库执行查询语句之后产生的结果FMDatabaseQueue
:如果你想要执行在多线程中执行查询和更新的话,你要使用到这个类。
1.数据库创建
创建FMDatabase
数据时,我们要提供一个SQLite数据库文件路径。路径可以是下面的类型:
- 文件系统路径:提供的文件不必存在,如果不存在的话,会自动创建的
- 一个空的字符串(@”“):会在一个临时位置创建一个空的数据库,当
FMDatabase
连接关闭的话,这个数据库就会被删除 NULL
:会创建一个内存中的数据库。当FMDatabase
连接关闭的话,这个数据库就会被删除
例如:
FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];
或者
NSArray* paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentDirectory = [paths lastObject];
NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"fmdb.db"];
FMDatabase *db=[FMDatabase databaseWithPath:dbPath];
2.打开数据库
在你与数据库交互之前,必须要打开数据库,如果没有足够的资源、权限来打开、创建数据库时,打开数据库便会失败。
if (![db open]) {
[db release];
return;
}
3.执行更新操作
任何类型的SQL语句,只要不是SELECT
,都当作是一个更新。这包括CREATE
, UPDATE
, INSERT
, ALTER
, COMMIT
, BEGIN
, DETACH
, DELETE
, DROP
, END
, EXPLAIN
, VACUUM
, 和 REPLACE
语句。
执行更新语句返回一个值,BOOL
。如果更新成功进行的话,就返回YES
,如果发生错误的话,就返回NO
。你可以调用-lastErrorMessage
和 -lastErrorCode
方法来获取更多信息。
4.执行查询操作
SELECT
语句是一个查询语句,通过-executeQuery...
方法来执行。
如果成功执行查询语句的话,就会返回一个FMResultSet
对象,如果失败的话,返回的是nil
。你应当使用-lastErrorMessage
和 -lastErrorCode
方法来看看为什么查询操作失败了。
为了遍历查询的结果,使用while()
循环,你需要一条记录一条记录地进行查询。使用FMDB,最简单的操作是下面这样:
FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"];
while ([s next]) {
//获得每一条记录的值
}
就算你只想获取一条记录,也必须要在试图获取查询获得的值之前执行-[FMResultSet next]
FMResultSet *s = [db executeQuery:@"SELECT COUNT(*) FROM myTable"];
if ([s next]) {
int totalCount = [s intForColumnIndex:0];
}
FMResultSet
有很多方法来获取数据,以一种适当的格式
上面的每个方法也对应{type}ForColumnIndex:
方法,这是通过结果中字段的位置来获取数据的。
5.关闭数据库
当你对数据库执行查询和更新操作后,你应当关闭数据库。
[db close];