iOS开发篇(九)FMDB的使用与介绍2

上篇博文介绍FMDB安全性问题,今天介绍FMDB的“事物”及离线缓存

一、事物:

       通常一次 sqlite3_exec 就是一次事务,假如你要对数据库中的Stutent表插入新数据,那么该事务的具体过程是:开始新事物->插入数据->提交事务,那么当我们要往该表内插入500条数据,如果按常规操作处理就要执行500次“开始新事物->插入数据->提交事务”的过程。

       通常事物用来对数据库进行批量操作时会用到,优点:节省时间;

       另一种情况:两种不同的DML语句去操作同一字段,开启事物,这样可以保证字段对应数据的准确性。

举个例子:如果t_student这张表需要同时插入500名学生的信息,若不开启事物逐条执行,就是插入一条保存一条,如果反复效率不高;若开启事物的500条记录,只有到提交事物的时候才会依次执行DML语句,且若DML语句有错误的话系统会进行回滚,效率很高。

直接上代码:


- (void)updateStudentInfor{

//1. 第一种写法

queue  initDatabase^(FMDatabase  *db){

//1.1 开启事物

[db  excuteUpdate:@" begin transaction "];  // or  [ db  beginTransaction ];

//2. 执行DML语句

for (int i = 0; i < 500; i++){ 

NSArray   *names = @[@"Kobe",@"Curry",@"James",@"Ducan",@"O'Neal"];

int  index  =   arc4random()%names.count;

NSSting   *namePre = names[index];

NSString  *name  =  [NSString  stringWithFormat@" %@_%d ", namePre, arc4random() % 500 ];

int age = arc4random() % 500;

[ db  excuteUpdate:@"insert into  t_student  (name, age)  values ( ?, ?); " ,name ,age ];

}

//3. 判断是否回滚

[ db excuseUpDate:@"rollback  transaction" ];  // or   [ db  rollback ]; 


//4. 提交事物

[db  excuteUpDate:@"commit  transsaction"];  // or   [ db  commit ];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值