GreenDAO支持DaoMaster.dropAllTables()和DaoMaster.createAllTables()。我正在寻找类似的功能在RoomDB。RoomDB支持这个功能吗?
这个功能的用例是,当用户试图用新的手机号登录我的应用时,我想通过显示一个警告对话框消息来清除旧的登录号的数据,并允许用新的号码登录。
Room只支持在运行过程中丢弃和创建表的功能。迁移 模式版本之间。
您可以访问底层的 SupportSQLiteDatabase
通过 RoomDatabase.getOpenHelper().getReadableDatabase(). 这样,你就可以使用 execSQL() 来执行SQL语句,包括掉表和创建。
但这样做不符合Room的预期用途,也不安全。 它很可能会破坏 InvalidationTracker 用于通知观察者对托管表的更改。
从你的使用情况来看,你需要做的不是删除和重新创建表,而是通过删除所有条目来清除它们。