Android 安卓房间数据库。创建和删除以表名为参数的表

Android 安卓房间数据库。创建和删除以表名为参数的表,android,android-studio,android-room,Android,Android Studio,Android Room,有没有办法创建和删除类似于“RawQuery”的表? 我尝试使用@RawQuery注释(这对我来说是一个完美的解决方案),但是当我编译时,我得到一个错误,即使用RawQuery注释的方法不能返回void 使用@Query时,允许使用只读选择、更新和删除语句 我希望通过将tablename作为参数传递来实现“创建或删除表”,如下所示: @Query("DROP TABLE :name") void deleteTable (String name); 关于如何实现这一点有什么想法吗? 谢谢 问

有没有办法创建和删除类似于“RawQuery”的表?

我尝试使用
@RawQuery
注释(这对我来说是一个完美的解决方案),但是当我编译时,我得到一个错误,即使用
RawQuery
注释的方法不能返回void

使用
@Query
时,允许使用只读选择、更新和删除语句

我希望通过将
tablename
作为参数传递来实现“创建或删除表”,如下所示:

@Query("DROP TABLE :name")
void deleteTable (String name); 
关于如何实现这一点有什么想法吗?


谢谢

问题是,在wit Room中,您不必“删除”表,这些表是根据您的实体类重新创建的(用
@entity
注释)

据我所知,您通常需要删除表,以防列更改或“结构”上有一些更新,但如果您不更改迁移无法自动处理的实体结构,那么这样做没有意义。在这种情况下,Room为您提供了自己进行迁移的机会。检查此处的文档: 但就像文档中所说的那样,对此要特别小心。

指出

RawQuery
作为一个转义窗口,您可以在运行时构建自己的SQL查询,但仍然可以使用Room将其转换为 对象

RawQuery
方法必须返回非void类型。如果要执行不返回任何值的原始查询,请使用 方法

或者像这样使用它

@RawQuery
int deleteTable (SupportSQLiteQuery query); //We can return int status like it used to return with database.delete()

//Usage

dao.deleteTable(
        new SimpleSQLiteQuery("DROP TABLE tablename")
)