RoomDB是否支持dropAllTables()和createAllTables()?

问题描述 投票:0回答:1

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

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

android-room create-table greendao drop-table
1个回答
0
投票

Room只支持在运行过程中丢弃和创建表的功能。迁移 模式版本之间。

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

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

从你的使用情况来看,你需要做的不是删除和重新创建表,而是通过删除所有条目来清除它们。

© www.soinside.com 2019 - 2024. All rights reserved.