Android 数据库事务的个人理解

执行事务,只有在特定的条件下才会设置为successful,否则就会自动的rollback
rollbak有两种情况,一种是执行失败了,另外一种是我们doIntransaction里面执行到某些情况的时候自己设置需要rollback

+++++++++++++++++++++++++++++++++++

事务,开始,做事,判,成功,结束

package com.example.kodulf.litepaldemo; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteTransactionListener; 
import org.litepal.LitePal;
/** * Created by Kodulf on 2017/5/1. */ 
public class DatabaseTransaction { 
public static synchronized void doTransaction(SQLiteTransactionListener sqLiteTransactionListener, DatabaseExecutor databaseExecutor)
{ 
//获取database 
SQLiteDatabase database = LitePal.getDatabase(); 
//开始执行事务 
database.beginTransactionWithListener(sqLiteTransactionListener);
try { 
//do something 
databaseExecutor.doInTransaction(); 
//判断如果是否需要rollback, 
//当needRollback为false的时候,那么设置事务执行成功,只有这个条件的时候才将事务设置为成功 //否则不设置为成功,那么会自动的rollback
 if(!databaseExecutor.needRollback()) 
database.setTransactionSuccessful(); 
}catch (Exception e){ e.printStackTrace(); }finally { database.endTransaction(); } }  public interface DatabaseExecutor {         /**          * 可以在这里设置是否需要rollback          * @return          */         boolean needRollback();         /**          * 需要在事务中执行的          */         void doInTransaction();     } } 调用的地方:such as: public void add(View view) { DatabaseTransaction.doTransaction(new SQLiteTransactionListener() { @Override public void onBegin() { Log.d("kodulf", "tranaction onBegin"); } @Override public void onCommit() { Log.d("kodulf", "tranaction onCommit"); } @Override public void onRollback() { Log.d("kodulf", "tranaction on Roll back"); } }, new DatabaseTransaction.DatabaseExecutor() { boolean ret = false; @Override public boolean needRollback() { return ret; } @Override public void doInTransaction() { if(num%3==0){ ret = true; } } }); }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值