Flexicoder
Flexicoder

Reputation: 8501

Android Query MediaStore using IN clause

I'm trying to pull all the tracks for items i've stored in a "playlist", I have a set of android.provider.MediaStore.Audio.Media._ID values and I'm trying to build a query using the IN clause, the example below doesn't work...

        String[] projection = { android.provider.MediaStore.Audio.Media.TITLE, android.provider.MediaStore.Audio.Media._ID,
                android.provider.MediaStore.Audio.Media.ALBUM, android.provider.MediaStore.Audio.Media.ARTIST,
                android.provider.MediaStore.Audio.Media.DURATION, android.provider.MediaStore.Audio.Media.DISPLAY_NAME,
                android.provider.MediaStore.Audio.Media.ALBUM_ID, android.provider.MediaStore.Audio.Media.ARTIST_ID};

        String whereString = android.provider.MediaStore.Audio.Media._ID + " IN (?)";

        String[] selectionArgs = {"626,625"};

But, if I change the selecionArgs to

        String[] selectionArgs = {"626"};

It does work

Should the IN clause work or am I going to have to build up a lot of OR statements (which I obviously don't want to do)

Upvotes: 0

Views: 127

Answers (1)

Flexicoder
Flexicoder

Reputation: 8501

In case anyone else tried to do this the IN statement needs a matching number of '?', i.e. you can't have a single parameter that has a list of values, so this works...

    String[] projection = { android.provider.MediaStore.Audio.Media.TITLE, android.provider.MediaStore.Audio.Media._ID,
            android.provider.MediaStore.Audio.Media.ALBUM, android.provider.MediaStore.Audio.Media.ARTIST,
            android.provider.MediaStore.Audio.Media.DURATION, android.provider.MediaStore.Audio.Media.DISPLAY_NAME,
            android.provider.MediaStore.Audio.Media.ALBUM_ID, android.provider.MediaStore.Audio.Media.ARTIST_ID};

    String whereString = android.provider.MediaStore.Audio.Media._ID + " IN (?,?)";

    String[] selectionArgs = {"626","625"};

Upvotes: 1

Related Questions