android - getWritableDatabase() 会影响事务吗

标签 android sqlite android-sqlite

据我所知,调用 SqliteOpendHelper.getWritableDatabase() 总是返回相同的 SQLiteDatabase 实例。那么与之关联的交易是否也不会受到影响?

假设一个单线程环境,我使用一个单例 SQLiteOpenHelper 实例。假设我有一个长事务:

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

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

最佳答案

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

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

关于android - getWritableDatabase() 会影响事务吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26729595/

相关文章:

android - 如何在 SQLITE 中使用 JOIN 从 2 个表中删除数据

android - Java 使用什么来存储 GAE

java - Android Studio - 按下按钮时循环动画

android - 嵌套的 ViewPager 在 onBackPressed() 上空白内容

objective-c - WatchKit:Swift - 如何获取数据并将其放入位于我的 iPhone App 文档文件夹中的 sqlite 数据库中

android - SQLite 异常 : near "ORDER" while compiling

android - 将 Id 提供给 View pager 像按钮这样的项目是行不通的

Android CallLog.Calls provider查询问题

ios - iOS中的数据表

ios - SQLite查询区域内的位置字段