Android 数据库事务的个人理解
16lz
2021-01-23
执行事务,只有在特定的条件下才会设置为successful,否则就会自动的rollbackrollbak有两种情况,一种是执行失败了,另外一种是我们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; } } }); }
更多相关文章
- Java实现多种情况下语言本地化
- Android学习_18_使用事务操作SQLite数据库
- android textview宽度固定的情况下字体大小自适应
- android 使用数据库事务提高操作效率
- android:sqlite 数据库的事务详解
- android获取手机流量使用情况
- Android版本和兼容情况
- Android 设备管理器和有权查看使用情况的应用详解