如何使用房间持久性库删除特定表上的所有条目? 我需要删除表,但我无法找到如何做到这一点的任何信息。
仅当数据库正在迁移或加载所有条目并删除它们:)
如何使用房间持久性库删除特定表上的所有条目? 我需要删除表,但我无法找到如何做到这一点的任何信息。
仅当数据库正在迁移或加载所有条目并删除它们:)
当前回答
以下是我如何在Kotlin中做到这一点。
使用DI (Koin)在活动中注入房间db。 private val appDB:通过注入() 然后您可以简单地调用clearAllTables()
private fun clearRoomDB() {
GlobalScope.launch {
appDB.clearAllTables()
preferences.put(PreferenceConstants.IS_UPLOADCATEGORIES_SAVED_TO_DB, false)
preferences.put(PreferenceConstants.IS_MEMBERHANDBOOK_SAVED_TO_DB, false)
}
}
其他回答
您可以创建一个DAO方法来做到这一点。
@Dao
interface MyDao {
@Query("DELETE FROM myTableName")
public void nukeTable();
}
要在不滥用@Query注释的情况下使用Room,首先使用@Query选择所有行并将它们放入列表中,例如:
@Query("SELECT * FROM your_class_table")
List`<`your_class`>` load_all_your_class();
将他的列表放到delete注释中,例如:
@Delete
void deleteAllOfYourTable(List`<`your_class`>` your_class_list);
如果有人在寻找删除所有的表,刷新一切在应用程序没有任何代码遵循 设备文件资源管理器-> data -> data -> com. com。YOUR_APP ->数据库 您可以删除数据库文件夹中的文件
从1.1.0房间开始,你可以使用clearAllTables():
删除作为entities()注册到此数据库的所有表中的所有行。
如果想要从Room中的表中删除一个条目,只需调用这个函数,
@Dao
public interface myDao{
@Delete
void delete(MyModel model);
}
更新:如果你想删除完整的表,调用下面的函数,
@Query("DELETE FROM MyModel")
void delete();
注意:这里MyModel是一个表名。