iOS开发系列--详细介绍数据存取

2020-01-18 17:36:10王旭

然后所有的增删改查操作调用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开发频道。