有什么方法可以创建和删除类似于“RawQuery”的表吗?
我尝试使用 @RawQuery
注释 (这对我来说是完美的解决方案) 但是当我编译时我得到了一个错误说用 RawQuery
注释的方法不能返回 void。
我只读了 SELECT、UPDATE 和 DELETE 语句在使用 @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/