问题
是否有可能在运行时构造一个查询?
用例
@query("SELECT * FROM playList " + "WHERE playList_Title liKE '% :playListTitle %' " + "GROUP BY playList_Title " + "ORDER BY playList_Title " + "liMIT :limit") List<IPlayList> searchPlayLists(String playListTitle, int limit);
限制部分是可选的.也就是说,它应该能够在有或没有限制的情况下执行相同的查询.
一个更复杂的用例
在前一种情况下,可以使用和不使用限制部分进行两个静态查询,并且每次都可以使用适当的一个.但有时我们可能不得不处理更复杂的情况,例如构建过滤器.
在这种情况下,与前面的示例不同,将有多个可选部分.对于书籍表,我们可能需要根据书籍所属的类别,作者姓名,价格范围,出版日期等进行过滤.使用这些部分的所有组合进行静态查询几乎是不可能的.
解决方法:
根据我的经验(简称)使用不可能的房间,而不是因为房间限制,而是由@CommonsWare隐含评论,sqlite的限制.您需要两个查询,因此DAO中有两个方法.
我会有类似的东西:
@query("SELECT * FROM playList " + "WHERE playList_Title liKE '% :playListTitle %' " + "GROUP BY playList_Title " + "ORDER BY playList_Title " + "liMIT :limit")List<IPlayList> searchPlayLists(String playListTitle, int limit);@query("SELECT * FROM playList " + "WHERE playList_Title liKE '% :playListTitle %' " + "GROUP BY playList_Title " + "ORDER BY playList_Title ")List<IPlayList> searchPlayLists(String playListTitle);
然后在其他地方你做旁路:
if (limit.isPresent()) { return playListDao.searchPlayLists(Title, limit.get());} else { return playListDao.searchPlayLists(Title);}
这是我现在能想到的最佳选择.
总结以上是内存溢出为你收集整理的android – 如何在运行时动态查询房间数据库?全部内容,希望文章能够帮你解决android – 如何在运行时动态查询房间数据库?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)