Android 安卓房间数据库。创建和删除以表名为参数的表
有没有办法创建和删除类似于“RawQuery”的表? 我尝试使用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
注释的方法不能返回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")
)