使用Sqlite查询,这是我的问题,以MediaStore.Audio.Artist.Artist为例,
String[] projection={MediaStore.Audio.Artists._ID,MediaStore.Audio.Artists.ARTIST};
String selectionClause=MediaStore.Audio.Artists.ARTIST+" = ?";
String[] selectionArgs={"Artist1","Artist2"};
只想取回与String" Artist1"匹配的结果和" Artist2",但我得到如下错误,
Caused by: java.lang.IllegalArgumentException: Cannot bind argument at index 2 because the index is out of range. The statement has 1 parameters.
请告诉我这有什么问题和正确的方法,谢谢!
答案 0 :(得分:0)
你需要拥有尽可能多的'?'在参数中的子句参数中。 在这种情况下,它将是:
MediaStore.Audio.Artists.ARTIST+" = ? AND " + MediaStore.Audio.Artists.ARTIST+" = ?";
答案 1 :(得分:0)
感谢Emanue和CL,基于他们的想法,下面是解决方案,
MediaStore.Audio.Artists.ARTIST+" = ? OR " + MediaStore.Audio.Artists.ARTIST+" = ?";
如您所见,您应该使用" OR"而不是" AND",如果想要查询的结果将匹配selectionArgs。 PS。 selectionArgs项的数量应与selectionClause的数量相同。
再次感谢所有人!