然后所有的增删改查操作调用FMDatabaseQueue的inDatabase:方法在block中执行操作sql语句即可。
-(void)executeNonQuery:(NSString *)sql{
//执行更新sql语句,用于插入、修改、删除
[self.database inDatabase:^(FMDatabase *db) {
[db executeUpdate:sql];
}];
}
-(NSArray *)executeQuery:(NSString *)sql{
NSMutableArray *array=[NSMutableArray array];
[self.database inDatabase:^(FMDatabase *db) {
//执行查询sql语句
FMResultSet *result= [db executeQuery:sql];
while (result.next) {
NSMutableDictionary *dic=[NSMutableDictionary dictionary];
for (int i=0; i<result.columnCount; ++i) {
dic[[result columnNameForIndex:i]]=[result stringForColumnIndex:i];
}
[array addObject:dic];
}
}];
return array;
}
之所以将事务放到FMDB中去说并不是因为只有FMDB才支持事务,而是因为FMDB将其封装成了几个方法来调用,不用自己写对应的sql而已。其实在在使用libsqlite3操作数据库时也是原生支持事务的(因为这里的事务是基于数据库的,FMDB还是使用的SQLite数据库),只要在执行sql语句前加上“begin transaction;”执行完之后执行“commit transaction;”或者“rollback transaction;”进行提交或回滚即可。另外在Core Data中大家也可以发现,所有的增、删、改操作之后必须调用上下文的保存方法,其实本身就提供了事务的支持,只要不调用保存方法,之前所有的操作是不会提交的。在FMDB中FMDatabase有beginTransaction、commit、rollback三个方法进行开启事务、提交事务和回滚事务。
原文链接:http://www.easck.com/kenshincui/p/4077833.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到IOS开发频道。










