首页 > 系统 > Android > 正文

详解Android SQLite 事务处理的解决方法

2020-02-21 17:25:01
字体:
来源:转载
供稿:网友

Android应用程序在初始化的时候,都需要大量数据批量插入SQLite中运行,下面武林技术频道小编为大家慢慢介绍Android SQLite 事务处理的解决方法吧!

解决方法:

添加事务处理,把5000条插入作为一个事务


我们使用SQLite的事务进行控制:

 

        db.beginTransaction();  //手动设置开始事务

 

        try{

            //批量处理操作

            for(Collection c:colls){

                insert(db, c);

            }

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

//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作

           }catch(Exception e){

               MyLog.printStackTraceString(e);

           }finally{

               db.endTransaction(); //处理完成

           }

 


一、使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功,则所有从beginTransaction()开始的操作都会被提交,如果没有调用setTransactionSuccessful() 方法则回滚事务。

 

二、使用例子如下:下面两条SQL语句在同一个事务中执行。

Java代码

 

//银行账户事务测试 
public void payment() 

    SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); 
    //开启事务 
    db.beginTransaction(); 
    try 
    { 
        db.execSQL("update person set amount=amount-10 where personid=?", new Object[]{1}); 
        db.execSQL("update person set amount=amount+10 where personid=?", new Object[]{2}); 
        //设置事务标志为成功,当结束事务时就会提交事务 
        db.setTransactionSuccessful(); 
    } 
   catch(Exception e){
        throw(e);
    }
    finally 
    { 
        //结束事务 
        db.endTransaction(); 
    } 
}

相信大家看了详解Android SQLite 事务处理的解决方法,都多多少少了解到了吧,有时候项目的需求和程序的完美结合,才能够让项目达到完美的效果。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表