【问题标题】:Query a database in selection arguments order按选择参数顺序查询数据库
【发布时间】:2012-07-21 12:21:30
【问题描述】:

我正在尝试查询 Android MediaStore.Audio.Media 数据库。我有一个“播放列表”,一个字符串数组列表,其中包含设备上歌曲的路径(数据库中的数据列)。在播放列表中,我只有一些歌曲(当然,不是当前设备上的所有歌曲),我希望光标从数据库中返回艺术家、标题和专辑 ID 信息。查询本身不是问题,我只是制作选择字符串并将播放列表中的条目作为选择参数,它工作正常。

问题在于它返回数据的顺序。当'order by'参数设置为null时,游标按升序返回数据。播放列表中的歌曲顺序是随机的,我需要按该顺序返回的信息。

我尝试为每个播放列表条目分别查询数据库,它可以正常工作,并以正确的顺序为我提供信息,但它当然很多,而且我的意思是要慢很多。

有没有办法在单个查询中做到这一点?

【问题讨论】:

    标签: android cursor selection


    【解决方案1】:

    您可以构建自己的 order by 子句,将每首歌曲包含在列表中:

    order by (case when song = <first song> then 1
                   when song = <second song> then 2
                   . . .
              end)
    

    这会为每首歌曲分配一个编号。此数字仅在 order by 子句中用于对结果进行排序。

    【讨论】:

    • 太棒了。非常感谢!
    • 并且不要忘记在歌曲字符串中转义单引号'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多