UI18-数据库操作:SQL FMDB
(一 ) FMDB 的打开数据库,创建表,查询
(二)执行语句:
(三)存储数据,进行model的归档,反归档,并且实现nscoding协议 一个对象可以转化为data.实质上实现了NScoding协议 一个对象要遵守NSCoding协议,实现协议的方法,才能转成NSData.
(四) 实现encoding协议两个方法:
(五) 抽离相同代码,使用方法,或者使用Block 调用重复的代码,参数和返回值设置好.
1/外键 约束。
(六) FMDB中---多线程操作
- 如果要进行海量操作的话,就要用到子线程来加快速度
- 但是数据库操作海量数据的话,比如说插入100000条数据的话,可以开启多个子线程来操作,但是必须使用同步线程,让多个线程逐一执行,而不致于引起数据库数据混乱。
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]) {
// …
}
}];
- 使用事务
[queue inTransaction:^(FMDatabase *db, BOOL *rollback) { [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;