据我了解,调用SqliteOpendHelper.getWritableDatabase()
始终返回SQLiteDatabase
的相同实例。那么与之相关的交易是否也不受影响?
假设单线程环境,我使用单例SQLiteOpenHelper实例。假设我有一个很长的交易:
SQLiteDatabase.beginTransaction()
一次。SqliteOpendHelper.getWritableDatabase()
。SqliteOpendHelper.getWritableDatabase()
。SQLiteDatabase.endTransaction()
一次。 所有DAO操作是否都在该单个事务中执行?如果多次调用getWritableDatabase()
以某种方式影响事务,我无法从source中找出答案。< / p>
答案 0 :(得分:1)
是; getWritableDatabase()
始终返回相同的连接对象(除非之前已关闭),并且单个数据库连接始终使用单个事务,因此通过它完成的所有操作都在同一事务中。
请注意SQLiteDatabase
支持嵌套事务调用,因此低级CRUD操作可以安全地执行自己的事务,无论它们在何处被调用。