ContentResolver.query是否会转义参数,还是仅替换问号?

时间:2012-04-25 12:48:45

标签: android sql sqlite

ContentResolver.query是否会逃避选择参数?

例如,我应该在执行

之类的操作之前手动转义selArgs中的参数
Cursor c = contentResolver.query(uri, null, "mimetype=?", selArgs, null);

还是由query方法完成?

1 个答案:

答案 0 :(得分:0)

没有。您应该在内容提供商中手动执行此操作。

查询功能的源代码:

public final Cursor query(Uri uri, String[] projection,
            String selection, String[] selectionArgs, String sortOrder) {
        IContentProvider provider = acquireProvider(uri);
        if (provider == null) {
            return null;
        }
        try {
            long startTime = SystemClock.uptimeMillis();
            Cursor qCursor = provider.query(uri, projection, selection, selectionArgs, sortOrder);
            if (qCursor == null) {
                releaseProvider(provider);
                return null;
            }
            // force query execution
            qCursor.getCount();
            long durationMillis = SystemClock.uptimeMillis() - startTime;
            maybeLogQueryToEventLog(durationMillis, uri, projection, selection, sortOrder);
            // Wrap the cursor object into CursorWrapperInner object
            return new CursorWrapperInner(qCursor, provider);
        } catch (RemoteException e) {
            releaseProvider(provider);

            // Arbitrary and not worth documenting, as Activity
            // Manager will kill this process shortly anyway.
            return null;
        } catch (RuntimeException e) {
            releaseProvider(provider);
            throw e;
        }
    }