如何控制id等于未知数的变量sql查询?
How to control where id is equal to unknown number of variable sql query?
我正在寻找类似的东西:
String ID = ContactsContract.Contacts._ID;
ContentResolver cR = context.getContentResolver();
Cursor cursor = cR.query(mUri, null, ID + " =?", mStringArray, null);
mStringArray 不明显,用户会为其元素赋值。所以我们不知道数组的长度是多少,mStringArray 有哪些元素。我想查询 mStringArray 的每个值。在那种情况下,我收到一个错误 "IllegalArgumentException: Cannot bind argument at index 2(or 3,4,...) because the index is out of range. The statement has 1 parameters"。
希望我说清楚了。
而不是 =
您应该使用运算符 IN
并使用与数组 mStringArray
:[=15 的项目一样多的 ?
占位符构造语句=]
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);
我正在寻找类似的东西:
String ID = ContactsContract.Contacts._ID;
ContentResolver cR = context.getContentResolver();
Cursor cursor = cR.query(mUri, null, ID + " =?", mStringArray, null);
mStringArray 不明显,用户会为其元素赋值。所以我们不知道数组的长度是多少,mStringArray 有哪些元素。我想查询 mStringArray 的每个值。在那种情况下,我收到一个错误 "IllegalArgumentException: Cannot bind argument at index 2(or 3,4,...) because the index is out of range. The statement has 1 parameters"。
希望我说清楚了。
而不是 =
您应该使用运算符 IN
并使用与数组 mStringArray
:[=15 的项目一样多的 ?
占位符构造语句=]
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);