创建数据库,并使用事物的方式擦入数据
2015-07-10 11:21
387 查看
////常用的数据库 //客户端:sqlite3 //服务器:oracle(Sun)、sybase、sqlserver、mysql、db2 //数据库的事物 ,有时候操作很多条sql语句时,会执行很长的时间,我们把这些语句放到一个事务中,可以提高效率 //下面取两个时间值可以比较出使用事物和不使用事物的时间差距 //创建数据库的方法 NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.db"]; _database = [[FMDatabase alloc] initWithPath:path]; NSLog(@"%@",path); BOOL flag = [_database open]; if (!flag) { NSLog(@"打开数据库失败"); }else{ //创建表 NSString *sql = @"create table if not exists user(username varchar(255),age integer)"; BOOL ret = [_database executeUpdate:sql]; if (!ret) { NSLog(@"创建表失败"); } } //取第一个时间值 //插入数据 NSDate *date1 = [NSDate date]; //调用插入数据的方法,YES为使用事物插入,NO为不使用事物插入; [self insertDataWithNum:1000 isUserTransaction:YES]; //取第二个时间值 NSDate *date2 = [NSDate date]; //两个时间值比较得出差值 NSTimeInterval time = [date2 timeIntervalSinceDate:date1]; NSLog(@"%lf",time); //插入数据的方法 - (void)insertDataWithNum:(int)num isUserTransaction:(BOOL)useTransaction { if (useTransaction) { //使用事物 BOOL isError = NO; @try { //开启事物 [_database beginTransaction]; //执行插入操作 for (int i=0; i<num; i++) { NSString *name = [NSString stringWithFormat:@"第%d个用户",i]; int age = arc4random()%20+20; NSString *insertSql = @"insert into user (username,age) values (?,?)"; BOOL ret = [_database executeUpdate:insertSql,name,@(age)]; if (!ret) { NSLog(@"%@",_database.lastErrorMessage); } } } @catch (NSException *exception) { //出错 isError = YES; //回滚 [_database rollback]; } @finally { if (!isError) { //提交事物 NSLog(@"success"); [_database commit]; } } }else{ //不使用事物 for (int i=0; i<num; i++) { NSString *name = [NSString stringWithFormat:@"第%d个用户",i]; int age = arc4random()%20+20; NSString *insertSql = @"insert into user (username,age) values (?,?)"; BOOL ret = [_database executeUpdate:insertSql,name,@(age)]; if (!ret) { NSLog(@"%@",_database.lastErrorMessage); } } } }
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马
- 分割超大Redis数据库例子
- 重装主控服务器后,数据库连接失败的解决办法:请正确还原数据库。