Java 如何控制id等于未知数量的变量sql查询?

Java 如何控制id等于未知数量的变量sql查询?,java,android,sql,sqlite,android-sqlite,Java,Android,Sql,Sqlite,Android Sqlite,我正在寻找这样的东西: String ID = ContactsContract.Contacts._ID; ContentResolver cR = context.getContentResolver(); Cursor cursor = cR.query(mUri, null, ID + " =?", mStringArray, null); mStringArray不明显,用户将分配其元素。所以我们不知道数组的长度和mStringArray有哪些元素。我想查询mStringArray的

我正在寻找这样的东西:

String ID = ContactsContract.Contacts._ID;
ContentResolver cR = context.getContentResolver();
Cursor cursor = cR.query(mUri, null, ID + " =?", mStringArray, null);
mStringArray不明显,用户将分配其元素。所以我们不知道数组的长度和mStringArray有哪些元素。我想查询mStringArray的每个值。在这种情况下,我得到的错误是“IllegalArgumentException:无法在索引2(或3,4…)处绑定参数,因为索引超出范围。该语句有1个参数”


我希望我说得很清楚。

而不是
=
您应该在
中使用运算符
,并使用与数组
mstringaray
项一样多的
占位符来构造语句:

String ID = ContactsContract.Contacts._ID;
ContentResolver cR = context.getContentResolver();

StringBuilder sb = new StringBuilder();
for (String s : mStringArray ) {
    sb.append("?,");
}
String sqlIn = null;
if (sb.length() > 0) {
    sb.deleteCharAt(sb.length() - 1);
    sqlIn = ID + " IN (" + sb.toString() + ")";
}
Cursor cursor = cR.query(mUri, null, sqlIn, mStringArray, null);