android 大量数据写入数据库使用事务进行优化

 在工作中遇到了频繁写入数据库的问题,造成写入数据库慢,到别的界面比较卡的现象.二次开发的代码本来照着少改动少出错的原则,但是有点卡,不得不对数据库操作进行优化;

源代码操作的伪代码:

        if (dataList!=null&&dataList.size()>){

          for(Data data:dataList){

                  DatabaseManger.addData(data);

         }

     }   

     

//数据库管理类

  class DatabaseManager{

        //添加数据到数据库

     public static void  addData(Data data){

           SQLiteDatabase  db = 打开数据库;

             //添加到数据库

               db.insert(data);

        }

   }             

 

  以上操作是一条一条数据保存到数据库中,就相当于一条一条的写入磁盘中;

 添加事务进行优化:

   

if (dataList!=null&&dataList.size()>){

                  DatabaseManger.addData(dataList);

     }   

  

//数据库管理类

  class DatabaseManager{

        //添加数据到数据库

     public static void  addData(ArrayList dataList){

              SQLiteDatabase  db = 打开数据库;

                       //开启事务
historyRecordDB.beginTransaction();

                for(Data data:dataList){

 

                      //添加到数据库

                       db.insert(data);

                   }

        //设置事务处理成功,不设置会自动回滚不提交
historyRecordDB.setTransactionSuccessful();
//提交事务
historyRecordDB.endTransaction();

        }

   }          

 

总结: 在数据库插入大量数据时,使用for+insert会导致应用缓慢. 因为insert一条数据就是一个事务,有多少次insert就会有多少次磁盘的操作.

          使用事务就可以保证整体都能保存到数据库,而且还少很多次事务操作.

你可能感兴趣的:(Android开发)