1

連絡先テーブルがあり、特定のIDのみを取得する必要があります。

IDが1から10の連絡先が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 に答える