如何处理跨越多个java方法的sqlite中的事务

时间:2014-09-06 11:48:53

标签: android sqlite android-sqlite

假设我有3个java类:ABC。其中每个都有insert()delete()update()方法。我想在片段中的单个事务中执行A.delete()B.insert()C.update()。问题是这些方法打开它们自己的SQLiteDatabase实例并执行一个自动立即提交的SQL命令。一个示例方法是:

class A{
    ...     
    public void insert(...){
        LocalDBHelper localDBHelper = new LocalDBHelper(getActivity()); //extends SQLiteOpenHelper
        SQLiteDatabase db = localDBHelper.getWritableDatabase();
        db.insert(...);
        localDBHelper.close();
    }
}

一个明显的解决方案是在片段中执行getWritableDatabase(),然后执行db.beginTransaction(),然后将db对象传递给所有这些方法,以便所有SQL命令在同一个db实例上执行。最后,我可以在片段中运行db.endTransaction

有更好的方法吗?

另一个解决方案是使用接口(http://www.codepond.org/posts/the-right-way-to-persist-data-in-android-sqlite-database),这非常复杂,我认为实现它没有特别的优势。

0 个答案:

没有答案