创建数据库,并使用事物的方式擦入数据

原创 2015年07月10日 11:21:28
////常用的数据库
//客户端: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 擦图

package com.example.administrator.opencv.photoca; import android.content.Context; import android.gr...
  • www5256246
  • www5256246
  • 2018年01月10日 15:55
  • 42

mysql创建数据库并授权命令

登录MYSQL:mysql -u root -p 一、脚本创建数据库demodb,并制定默认的字符集是utf8mb4。 CREATE DATABASE demodb DEFAULT CHARSET...
  • jsyhello
  • jsyhello
  • 2016年11月08日 09:17
  • 938

Android 根据sql文件创建数据库并插入数据

因为在开发客户端的时候,服务器端的有写数据是重复的,不需要再去访问服务器的,然后服务器端提供的是一个sql文件,里面包含了数据库和数据,我们这些开发客户端的不可能一行一行的进行手动入库吧?所以我就想到...
  • qianqianyihao
  • qianqianyihao
  • 2014年10月08日 15:24
  • 1573

[mysql]创建数据库并指定编码

现在用orm比较多,很多mysql表啊都不用自己创建,但是数据库还是要自己创建,记录下sql, 备忘。 CREATE DATABASE `mydb` CHARACTER SET utf8 COLLA...
  • lzz957748332
  • lzz957748332
  • 2015年03月31日 22:02
  • 4024

使用PLSQL 创建Oracle数据库用户并设置权限

1、 首先在 PLQL Developer 中打开数据库。使用 "sys" 用户,输入数据库名称,输入该数据库 ”sys” 用户的密码,在 ”Connect as” 组合框中选中 “SYSDBA”。单...
  • kbest
  • kbest
  • 2011年05月14日 22:28
  • 3641

事务的并发性和一致性(一)

一、 multiversion consistency model(多版本的一致性模式) 简单来说,ORACLE数据库通过在undo表空间中保留不同版本的数据块来满足一致性需求。从语句级别、事务级别...
  • flighting_sky
  • flighting_sky
  • 2013年05月02日 00:05
  • 754

Oracle DBA之手动地通过命令行的方式创建一个数据库

创建oracle数据库的时候,大多数情况我们都是用dbca,简单方便,比较自动化; 今天我们将尝试手动地通过命令行的方式创建一个数据库,别有一番风味。 oracle软件版本:10gR2 操作系统版本:...
  • t0nsha
  • t0nsha
  • 2011年07月24日 20:51
  • 6368

Spring事务配置的五种方式 巨全!不看后悔,一看必懂!

前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。...
  • hjm4702192
  • hjm4702192
  • 2013年12月12日 09:56
  • 23634

事务处理的三种方法

事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下3种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA...
  • holyrong
  • holyrong
  • 2007年09月14日 10:58
  • 1509

android创建SQlite数据库和表格详解

一、android创建数据库和MySQL的区别无非就是创建库和使用的API不同,如果熟悉增删改查语句,在android中增删改查语句同样适用,比较方便 思路:创建一个类,继承SQLiteOpenHe...
  • ye1714505125
  • ye1714505125
  • 2016年02月27日 10:24
  • 487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建数据库,并使用事物的方式擦入数据
举报原因:
原因补充:

(最多只允许输入30个字)