FMDataBase数据库的创建和插入

添加fmdb文件第三方库  

导入系统库 libsqlite3.dylib

<span style="background-color: rgb(255, 255, 0);"><span style="font-size:18px;">#import "FMDatabase.h"</span></span>

定义 FMDatabase
FMDatabase *_dataBase;//也封装了sqlite3的事务操作


<span style="font-size:18px;">    
   //创建数据库的路径    [NSHomeDirectory() 是应用程序根目录
    NSString *dbPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/test.db"];
    
    _dataBase = [[FMDatabase alloc] initWithPath:dbPath];
    if ([_dataBase open]) {
       //创建表
        NSString *createSql = @"create table if not exists student(id integer,name varchar(256))";
        if (![_dataBase executeUpdate:createSql]) {
            NSLog(@"create error:%@",_dataBase.lastErrorMessage);
        }
    }
    //函数执行的时间->时间差
    NSDate *date1 = [NSDate date];
   //手动开启一个事物,插入1000跳数据 
   [self insertDataWithCount:1000 isUseTransaction:YES];
    NSDate *date2 =[NSDate date];
    //算时间差 (date2 与date1 相差的秒数)
    NSTimeInterval time = [date2 timeIntervalSinceDate:date1];
    NSLog(@"Interval:%f",time);

}                                                                                                                                         
</span>


<span style="font-size:18px;"> //向表中插入1000条数据,是否启用事务
- (void)insertDataWithCount:(NSInteger)count isUseTransaction:(BOOL)isuse{
    if (isuse) {
      //手动开启事务
        //oc中对异常的捕获代码,性能不高,不能在程序中,频繁使用
        BOOL isError = NO;//用于标识是否出现异常
        @try {
            //写可能抛出异常的代码
            //手动开启一个事务,插入1000条数据的操作,算作一个事务
            [_dataBase beginTransaction];//开启事务,内部会操作sqlite3来在数据库中开启一个事务
            for (int i =0; i<count; i++) {
                NSString *stId = [NSString stringWithFormat:@"%d",i];
                NSString *stName = [NSString stringWithFormat:@"student%d",i];
                NSString *insertSql = @"insert into student(id,name) values(?,?)";
                BOOL isSuccessed = [_dataBase executeUpdate:insertSql,stId,stName];
                if (!isSuccessed) {
                    NSLog(@"insert error:%@",_dataBase.lastErrorMessage);
                }
            }
        }
        @catch (NSException *exception) {
            //try中的代码,出现异常(可能引起程序崩溃的异常),会执行到catch中
            //NSException 异常的类
            isError = YES;
            NSLog(@"exception:%@",exception.reason);
            //回滚事务,回到最初的状态
            [_dataBase rollback];
        }
        @finally {
            //无论代码是否出现异常,都会走到finally中
            if (isError == NO) {
               //提交事务
                [_dataBase commit];
            }
        }
    }else{
      //常规的操作
        for (int i =0; i<count; i++) {
            NSString *stId = [NSString stringWithFormat:@"%d",i];
            NSString *stName = [NSString stringWithFormat:@"student%d",i];
            NSString *insertSql = @"insert into student(id,name) values(?,?)";
            BOOL isSuccessed  =[_dataBase executeUpdate:insertSql,stId,stName];
            if (!isSuccessed) {
                NSLog(@"insert error:%@",_dataBase.lastErrorMessage);
            }
        }
    }
}


</span>



<span style="font-size:18px;">
</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值