Android 使用 IN 子句查询 MediaStore
Android Query MediaStore using IN clause
我正在尝试提取存储在 "playlist" 中的项目的所有轨道,我有一组 android.provider.MediaStore.Audio.Media._ID
值,我正在尝试使用IN 子句,下面的例子不起作用...
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"};
但是,如果我将 selecionArgs
更改为
String[] selectionArgs = {"626"};
确实有效
IN 子句应该起作用还是我必须建立很多 OR
语句(我显然不想这样做)
万一其他人尝试这样做,IN 语句需要匹配数量的“?”,即您不能有一个包含值列表的参数,所以这可行...
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"};
我正在尝试提取存储在 "playlist" 中的项目的所有轨道,我有一组 android.provider.MediaStore.Audio.Media._ID
值,我正在尝试使用IN 子句,下面的例子不起作用...
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"};
但是,如果我将 selecionArgs
更改为
String[] selectionArgs = {"626"};
确实有效
IN 子句应该起作用还是我必须建立很多 OR
语句(我显然不想这样做)
万一其他人尝试这样做,IN 语句需要匹配数量的“?”,即您不能有一个包含值列表的参数,所以这可行...
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"};