Android事务操作(操作sqlite导入大量数据耗时的解决方法)

原文路径:http://blog.csdn.net/xyg165/article/details/8489551

 

在Android开发中,需要向sqlite中导入大量数据,按照一般做法是很耗时的,测试了一下,导入一条数据在100ms左右,按照这样的做法,如果导入1万条数据,大约得花17分钟,经过实际测试,确实花了17分钟左右。

解决耗时的办法是利用sqlite的事务来处理。方法如下:

首先获取database对象,然后执行如下方法:

db.beginTransaction();      //手动设置开始事务 
//数据插入操作循环 

//update insert delete select可以循环嵌套操作 
db.setTransactionSuccessful();        //设置事务处理成功,不设置会自动回滚不提交 
db.endTransaction();        //处理完成

测试了一下,如果导入1万条数据,大约耗时20秒左右。性能比之前提升了一大截。

比如

    public int insert(Uri uri, ContentValues[] values) {

        SQLiteDatabase db = mOpenHelper.getWritableDatabase();

        db.beginTransaction();

        try {

            int numValues = values.length;

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

                   db.insertOrThrow(tablename, null, values);

            }

            db.setTransactionSuccessful();

        } finally {

            db.endTransaction();

        }

         return values.length;

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值