getWritableDatabase()会影响事务

时间:2014-11-04 07:16:33

标签: android sqlite android-sqlite

据我了解,调用SqliteOpendHelper.getWritableDatabase()始终返回SQLiteDatabase的相同实例。那么与之相关的交易是否也不受影响?

假设单线程环境,我使用单例SQLiteOpenHelper实例。假设我有一个很长的交易:

  • 我致电SQLiteDatabase.beginTransaction()一次。
  • DAO1构造函数调用SqliteOpendHelper.getWritableDatabase()
  • DAO1方法对其执行CRUD操作。
  • DAO2构造函数调用SqliteOpendHelper.getWritableDatabase()
  • DAO2方法对其执行CRUD操作。
  • ... on and on
  • 我致电SQLiteDatabase.endTransaction()一次。

所有DAO操作是否都在该单个事务中执行?如果多次调用getWritableDatabase()以某种方式影响事务,我无法从source中找出答案。< / p>

1 个答案:

答案 0 :(得分:1)

是; getWritableDatabase()始终返回相同的连接对象(除非之前已关闭),并且单个数据库连接始终使用单个事务,因此通过它完成的所有操作都在同一事务中。

请注意SQLiteDatabase支持嵌套事务调用,因此低级CRUD操作可以安全地执行自己的事务,无论它们在何处被调用。