Reputation: 8501
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
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