房间坚持图书馆。 删除所有

如何使用房间持久性库删除特定表上的所有条目? 我需要放桌子,但我不能find任何信息如何做到这一点。

只有当数据库正在迁移或加载所有条目并删除它们:)

  • Android室错误:types转换器无法识别列表的枚举
  • 如何在首次运行时填充Android Room数据库表?
  • Android室 - 简单的select查询 - 无法访问主线程上的数据库
  • 房间持久性库和内容提供商
  • Android会议室:订单不工作
  • 室内数据库中的硬编码布尔查询
  • 查看使用Room Persistence Library创建的数据库的内容
  • 房间持久性@Relation在Java中工作,但不在Kolin中
  • 您可以创build一个DAO方法来执行此操作。

    @Dao interface MyDao { @Query("DELETE FROM myTableName") public void nukeTable(); } 

    对于Migration ,您将传递一个SupportSQLiteDatabase并可以通过execSQL()删除所需内容。

    除此之外,你可以在你的RoomDatabase上调用getOpenHelper()并从中获得一个SupportSQLiteDatabase ,再一次调用execSQL()来删除你想要的东西。

    我没有看到删除所有实体的基于注释的方式,除非您碰巧将所有实体都放在内存中,并且可以将它们传递给您的Dao上的@Delete方法。

    我知道你已经得到了一个正确的答案,但是为了和SQLite一起工作,你也可以试试Kripton持久化库(现在版本为2.0.2),这是Room的一个替代scheme。 Kriptonpipe理SQLite,SharedPreference,REST服务(使用Retrofit)和文件系统的持久性。

    使用Kripton,与Room Library显示的代码相同:

     @BindDao(User.class) public interface MyDao { @BindSqlDelete public void nukeTable(); } 

    我是Kripton的作者。 有关Kripton持久性库的更多信息: