我有一个联系人表格,我只需要获得某些ID。
想象一下,我有10个与1到10个ID的联系人,我希望得到一个Cursor
联系人1和2。
工作代码将是:
new CursorLoader(MyContentProvider.CONTACT_CONTENT_URI, null,
MyContentProvider.CONTACT_COLUMN_ID + " IN ( 1, 2 )",
null, null);
我的问题是我无法使用selectionArgs
参数,因为转义会破坏查询。
您能想到使用selectionArgs
参数并使其有效的方法吗?
答案 0 :(得分:1)
如果您想使用selectionArgs
,则只能使用
String selection = "column IN (?, ?, ?)";
String[] selectionArgs = { "1", "2", "3" };
您需要根据运行时的参数数量构建"( ?, ?, ? )"
字符串。 E.g。
private static String getSelection(int args) {
StringBuilder sb = new StringBuilder(MyContentProvider.CONTACT_COLUMN_ID + " IN (");
boolean first = true;
for (int i = 0; i < args; i ++) {
if (first) {
first = false;
} else {
sb.append(',');
}
sb.append('?');
}
sb.append(')');
return sb.toString();
}