FMDB源码解析(上)-FMDB基本使用
最后更新:2017-02-22
2017, 说到做到
一: 初识FMDB
- FMDB是iOS平台的SQLite数据库框架
- FMDB以OC的方式封装了SQLite的C语言API
- GitHub链接: https://github.com/ccgus/fmdb
优点:
- 面向对象,使用更加简单,没必要写复杂的C语言代码;
- 提供多线程本安全,有效地防止数据混乱;
缺点:
1.用OC对SQLite的封装,失去了C语言的跨平台性;
二: 基本使用
FMDB有三个主要的类
-
FMDatabase – 表示一个单独的SQLite数据库。 用来执行SQLite的命令。
-
FMResultSet – 表示FMDatabase执行查询后结果集
-
FMDatabaseQueue – 如果你想在多线程中执行多个查询或更新,你应该使用该类。这是线程安全的。
三: 基本操作
1. 数据库创建
创建FMDatabase对象时参数为SQLite数据库文件路径。该路径可以是以下三种之一:
-
文件路径。
- 该文件路径无需真实存,如果不存在会自动创建。
-
空字符串(@”")。
- 表示会在临时目录创建一个空的数据库,当FMDatabase 链接关闭时,文件也被删除。
-
NULL.
- 将创建一个内在数据库。同样的,当FMDatabase连接关闭时,数据会被销毁.
FMDatabase *db = [FMDatabase databaseWithPath:path];
2. 打开数据库
在和数据库交互 之前,数据库必须是打开的,如果资源或权限不足无法打开或创建数据库,都会导致打开失败。
if (![db open]) {
[db release];
return;
}
3. 执行更新
一切不是SELECT命令的命令都视为更新。
这包括
- CREATE (创建)
- UPDATE (更新)
- INSERT (插入)
- ALTER
- COMMIT,
- BEGIN,
- DETACH,
- DELETE,
- DROP,
- END,
- EXPLAIN,
- VACUUM,
- REPLACE。
- 。。。
-(BOOL)executeUpdate:(NSString)sql, ...
-(BOOL)executeUpdateWithFormat:(NSString)format, ...
-(BOOL)executeUpdate:(NSString)sql withArgumentsInArray:(NSArray )arguments
执行更新返回一个BOOL值。YES表示执行成功,NO表示失败
执行错误,可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。
4.执行查询
-
SELECT命令就是查询
- (FMResultSet *)executeQuery:(NSString*)sql, ... - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ... - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments 成功返回 FMResultSet对象,错误返回 nil 执行错误,可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。
-
获取结果
FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"]; while ([s next]) { //retrieve values for each record }
FMResultSet 提供了很多方法来获得所需的格式的值:
```objc
intForColumn:
longForColumn:
longLongIntForColumn:
boolForColumn:
doubleForColumn:
stringForColumn:
dataForColumn:
dataNoCopyForColumn:
UTF8StringForColumnIndex:
objectForColumn:
```
你无需调用 [FMResultSet close]来关闭结果集, 当新的结果集产生,或者其数据库关闭时,会自动关闭。
5. 关闭数据库
当使用完数据库,你应该 -close 来关闭数据库连接来释放SQLite使用的资源。
[db close];
结束
参开列表:唐巧-在iOS开发中使用FMDB