我正在迁移一个应用程序以使用普通 Sqlite
中的 Room
,我遇到问题的一个部分是有几个查询有一个 order by 语句是用户可配置的,这意味着他们可以更改查看列表顺序的方式。
房间似乎不允许动态排序语句,因此我必须针对每个语句排序进行单独查询。
有没有人找到解决这个问题的更好方法,所以我可以有 1 个查询语句,其中唯一改变的是 order by 子句,而在我的情况下必须编写大约 15 个基本相同的额外查询语句?
最佳答案
我现在也遇到了同样的问题。可以做的是使用 CASE:
SELECT * FROM Table
ORDER BY
CASE WHEN :parameter = 1 THEN Column END ASC,
CASE WHEN :parameter = 2 THEN Column2 END DESC
但我假设您也在使用 ViewModel
,因此您可能每次都必须重新初始化它。我认为这种方式比编写 15 个查询要好一点,但可能没有那么紧凑。
这answer也有一个很好的例子,但我相信逻辑是相反的。
关于android - 房间用户可按查询配置顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50104554/