1

我有一个联系人表,我只需要获取某些 ID。

想象一下,我有 10 个 id 从 1 到 10 的联系人,我想得到一个Cursor联系人 1 和 2 的联系人。

一个工作代码是:

new CursorLoader(MyContentProvider.CONTACT_CONTENT_URI, null,
MyContentProvider.CONTACT_COLUMN_ID + " IN  ( 1, 2 )",
null, null);

我的问题是我无法使用该selectionArgs参数,因为转义会破坏查询。

你能想出一种使用selectionArgs参数并使其工作的方法吗?

4

1 回答 1

1

如果你想使用selectionArgs你只能像这样使用它

String selection = "column IN (?, ?, ?)";
String[] selectionArgs = { "1", "2", "3" };

不过,您需要"( ?, ?, ? )"在运行时根据参数的数量来构建字符串。例如

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();
}
于 2012-09-14T18:45:50.233 回答