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文章

Android中SharedPreferences存储数据的方法

2020-2-5 10:26:45

Android文章

Android之仿腾讯手机助手小火箭的发射效果

2020-2-5 11:41:48

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索