zoukankan      html  css  js  c++  java
  • android事务操作

      原文路径:http://blog.csdn.net/w250shini11/article/details/8649289

      最近有个客户反映,需要导入十几万的数据到sqlite,结果耗时很长,并且很容易崩溃。网上搜了下解决办法,看到了以下这个觉着靠谱的想法,但手上还没有相应的大量数据进行测试,先将方法保留下来。

      在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;

        }

  • 相关阅读:
    Linux 查看CPU信息,机器型号,内存等信息
    TCPdump抓包命令详解
    nginx https 转发
    滚动效果
    phpexcel中文手册(转)
    Java数组操作十大方法 (转)
    ajax防止重复提交
    信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货
    求方差分析与两样本T检验 区别
    互联网运营中的10大数据分析方法
  • 原文地址:https://www.cnblogs.com/dream550/p/4042963.html
Copyright © 2011-2022 走看看