android ContentProvider查询条件问题

时间:2017-03-06 07:57:30

标签: android sqlite

使用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.

请告诉我这有什么问题和正确的方法,谢谢!

2 个答案:

答案 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的数量相同。

再次感谢所有人!