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

标签 android android-studio android-room

有什么方法可以创建和删除类似于“RawQuery”的表吗?

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

我只读了 SELECT、UPDATEDELETE 语句在使用 @Query 时是允许的。

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

@Query("DROP TABLE :name")
void deleteTable (String name); 

关于如何实现这一点有什么想法吗?

谢谢!

最佳答案

Official doc指出,

RawQuery serves as an escape hatch where you can build your own SQL query at runtime but still use Room to convert it into objects.

RawQuery methods must return a non-void type. If you want to execute a raw query that does not return any value, use RoomDatabase#query methods.

或者像这样使用它,

@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")
)

关于安卓房间数据库。以表名作为参数创建和删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541847/

相关文章:

java - 函数If/else无法正确运行_app android使用加速度计

java - Android fragment ,案例2首先加载

java - 无法从 string.xml 获取字符串

java - 是否可以将同一个对象保存到两个不同的表房间?

android - react native 错误超时获取设备列表。在 ubuntu 上运行 hello world 时

具有指定提示的 Android 搜索栏

java - 如何使 IntelliJ/Android Studio 中的静态导入更快

java - 限制房间数据库中的行数

java - Room Android 实体和 POJO 必须具有可用的公共(public)构造函数

android-studio - Gradle 同步错误 - 从 Unity 将 Gradle 项目导入 Android Studio