IOS FMDB
Posted 守望星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS FMDB相关的知识,希望对你有一定的参考价值。
● FMDB有三个主要的类
? 一个FMDatabase对象就代表一个单独的SQLite数据库 ? 用来执行SQL语句
● FMResultSet
? 使用FMDatabase执行查询后的结果集
● FMDatabaseQueue
? 用于在多线程中执行多个查询或更新,它是线程安全的
打开数据库
NSLog(@"数据库打开失败!"); }
● 文件路径有三种情况
● 具体文件路径
? 如果不存在会自动创建
● 空字符串@""
? 会在临时目录创建一个空的数据库
? 当FMDatabase连接关闭时,数据库文件也被删除
● nil
? 会创建一个内存中临时数据库,当FMDatabase连接关闭时,数据库会被销毁
执行查询
● -(FMResultSet*)executeQuery:(NSString*)sql,...
● -(FMResultSet*)executeQueryWithFormat:(NSString*)format,...
● -(FMResultSet*)executeQuery:(NSString*)sql withArgumentsInArray:(NSArray *)arguments
● 示例
// 查询数据
FMResultSet *rs = [db executeQuery:@"SELECT * FROM t_student"];
// 遍历结果集
while ([rs next]) {
NSString *name = [rs stringForColumn:@"name"];
int age = [rs intForColumn:@"age"];
double score = [rs doubleForColumn:@"score"];
}
FMDatabaseQueue
● 为了保证线程安全,FMDB提供方便快捷的FMDatabaseQueue类 ● FMDatabaseQueue的创建
FMDatabaseQueue *queue = [FMDatabaseQueue
databaseQueueWithPath:path];
[queue inDatabase:^(FMDatabase *db) {
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jack"];
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Rose"];
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jim"];
FMResultSet *rs = [db executeQuery:@"select * from t_student"];
while ([rs next]) {
// ...
} }];
●使用事务
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jack"];
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Rose"];
[db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jim"];
FMResultSet *rs = [db executeQuery:@"select * from t_student"];
while ([rs next]) {
// ...
} }];
● 事务回滚 *rollback = YES;
以上是关于IOS FMDB的主要内容,如果未能解决你的问题,请参考以下文章