【问题标题】:Does RoomDB supports dropAllTables() and createAllTables()?Room DB 是否支持 dropAll Tables() 和 create Tables()?
【发布时间】:2020-10-05 21:50:05
【问题描述】:

GreenDAO 支持 DaoMaster.dropAllTables() 和 DaoMaster.createAllTables()。我正在 RoomDB 中寻找类似的功能。 RoomDB 支持这个功能吗??

此功能的用例是,当用户尝试使用新手机号码登录我的应用程序时,我想通过显示警告对话框消息来清除旧登录号码的数据并允许使用新号码登录。

【问题讨论】:

  • 您真的需要删除并重新创建表吗?删除表中的所有行还不够吗?

标签: android-room create-table greendao drop-table


【解决方案1】:

Room 仅在架构版本之间的 migration 期间支持删除和创建表。

您可以通过RoomDatabase.getOpenHelper().getReadableDatabase() 访问底层SupportSQLiteDatabase。这样,您就可以使用execSQL() 执行SQL 语句,包括删除和创建表。

但这样做与 Room 的预期用途不一致,也不安全。它很可能会破坏用于通知观察者托管表更改的InvalidationTracker

从您的用例看来,您需要做的就是通过删除所有条目来清除它们,而不是删除并重新创建表。

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2022-12-02
    • 2011-12-11
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多