다음을 통해 공유


ContentProvider.Query 메서드

정의

오버로드

Query(Uri, String[], String, String[], String)

클라이언트의 쿼리 요청을 처리하도록 구현합니다.

Query(Uri, String[], String, String[], String, CancellationSignal)

취소를 지원하는 클라이언트의 쿼리 요청을 처리하도록 구현합니다.

Query(Uri, String[], Bundle, CancellationSignal)

인수 Bundle가 압축되는 쿼리 요청을 처리하도록 구현합니다.

Query(Uri, String[], String, String[], String)

클라이언트의 쿼리 요청을 처리하도록 구현합니다.

[Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Ljava_lang_String_arrayLjava_lang_String_Ljava_lang_String_Handler")]
public abstract Android.Database.ICursor? Query (Android.Net.Uri uri, string[]? projection, string? selection, string[]? selectionArgs, string? sortOrder);
[<Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Ljava_lang_String_arrayLjava_lang_String_Ljava_lang_String_Handler")>]
abstract member Query : Android.Net.Uri * string[] * string * string[] * string -> Android.Database.ICursor

매개 변수

uri
Uri

쿼리할 URI입니다. 클라이언트에서 보낸 전체 URI입니다. 클라이언트가 특정 레코드를 요청하는 경우 URI는 구현이 구문 분석하고 WHERE 또는 HAVING 절에 추가하여 해당 _id 값을 지정하는 레코드 번호로 끝납니다.

projection
String[]

커서에 넣을 열 목록입니다. 모든 열이 포함된 경우 null

selection
String

행을 필터링할 때 적용할 선택 조건입니다. 이 경우 null 모든 행이 포함됩니다.

selectionArgs
String[]

선택 영역에 ?s를 포함할 수 있습니다. 선택 영역에 표시되도록 selectionArgs의 값으로 대체됩니다. 값은 문자열로 바인딩됩니다.

sortOrder
String

커서의 행을 정렬하는 방법입니다. 이 경우 null 공급자는 정렬 순서를 자유롭게 정의할 수 있습니다.

반환

커서 또는 null.

특성

설명

클라이언트의 쿼리 요청을 처리하도록 구현합니다.

대상 앱 android.os.Build.VERSION_CODES#O 이상에서는 이 메서드의 스텁 구현을 재정 #query(Uri, String[], Bundle, CancellationSignal) 의하고 제공해야 합니다.

프로세스 및 스레드에 설명된 대로 여러 스레드에서 이 메서드를 호출할 수 있습니다.

클라이언트 호출 예제:

// Request a specific record.
            Cursor managedCursor = managedQuery(
                            ContentUris.withAppendedId(Contacts.People.CONTENT_URI, 2),
                            projection,    // Which columns to return.
                            null,          // WHERE clause.
                            null,          // WHERE clause value substitution
                            People.NAME + " ASC");   // Sort order.

구현 예:

// SQLiteQueryBuilder is a helper class that creates the
                    // proper SQL syntax for us.
                    SQLiteQueryBuilder qBuilder = new SQLiteQueryBuilder();

                    // Set the table we're querying.
                    qBuilder.setTables(DATABASE_TABLE_NAME);

                    // If the query ends in a specific record number, we're
                    // being asked for a specific record, so set the
                    // WHERE clause in our query.
                    if((URI_MATCHER.match(uri)) == SPECIFIC_MESSAGE){
                        qBuilder.appendWhere("_id=" + uri.getPathLeafId());
                    }

                    // Make the query.
                    Cursor c = qBuilder.query(mDb,
                            projection,
                            selection,
                            selectionArgs,
                            groupBy,
                            having,
                            sortOrder);
                    c.setNotificationUri(getContext().getContentResolver(), uri);
                    return c;

에 대한 android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

Query(Uri, String[], String, String[], String, CancellationSignal)

취소를 지원하는 클라이언트의 쿼리 요청을 처리하도록 구현합니다.

[Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Ljava_lang_String_arrayLjava_lang_String_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")]
public virtual Android.Database.ICursor? Query (Android.Net.Uri uri, string[]? projection, string? selection, string[]? selectionArgs, string? sortOrder, Android.OS.CancellationSignal? cancellationSignal);
[<Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Ljava_lang_String_arrayLjava_lang_String_Ljava_lang_String_Landroid_os_CancellationSignal_Handler")>]
abstract member Query : Android.Net.Uri * string[] * string * string[] * string * Android.OS.CancellationSignal -> Android.Database.ICursor
override this.Query : Android.Net.Uri * string[] * string * string[] * string * Android.OS.CancellationSignal -> Android.Database.ICursor

매개 변수

uri
Uri

쿼리할 URI입니다. 클라이언트에서 보낸 전체 URI입니다. 클라이언트가 특정 레코드를 요청하는 경우 URI는 구현이 구문 분석하고 WHERE 또는 HAVING 절에 추가하여 해당 _id 값을 지정하는 레코드 번호로 끝납니다.

projection
String[]

커서에 넣을 열 목록입니다. 모든 열이 포함된 경우 null

selection
String

행을 필터링할 때 적용할 선택 조건입니다. 이 경우 null 모든 행이 포함됩니다.

selectionArgs
String[]

선택 영역에 ?s를 포함할 수 있습니다. 선택 영역에 표시되도록 selectionArgs의 값으로 대체됩니다. 값은 문자열로 바인딩됩니다.

sortOrder
String

커서의 행을 정렬하는 방법입니다. 이 경우 null 공급자는 정렬 순서를 자유롭게 정의할 수 있습니다.

cancellationSignal
CancellationSignal

진행 중인 null 작업을 취소하거나 없는 경우 취소하는 신호입니다. 작업이 취소되면 android.os.OperationCanceledException 쿼리가 실행될 때 throw됩니다.

반환

커서 또는 null.

특성

설명

취소를 지원하는 클라이언트의 쿼리 요청을 처리하도록 구현합니다.

대상 앱 android.os.Build.VERSION_CODES#O 이상은 이 메서드 대신 재정 #query(Uri, String[], Bundle, CancellationSignal) 의해야 합니다.

프로세스 및 스레드에 설명된 대로 여러 스레드에서 이 메서드를 호출할 수 있습니다.

클라이언트 호출 예제:

// Request a specific record.
            Cursor managedCursor = managedQuery(
                            ContentUris.withAppendedId(Contacts.People.CONTENT_URI, 2),
                            projection,    // Which columns to return.
                            null,          // WHERE clause.
                            null,          // WHERE clause value substitution
                            People.NAME + " ASC");   // Sort order.

구현 예:

// SQLiteQueryBuilder is a helper class that creates the
                    // proper SQL syntax for us.
                    SQLiteQueryBuilder qBuilder = new SQLiteQueryBuilder();

                    // Set the table we're querying.
                    qBuilder.setTables(DATABASE_TABLE_NAME);

                    // If the query ends in a specific record number, we're
                    // being asked for a specific record, so set the
                    // WHERE clause in our query.
                    if((URI_MATCHER.match(uri)) == SPECIFIC_MESSAGE){
                        qBuilder.appendWhere("_id=" + uri.getPathLeafId());
                    }

                    // Make the query.
                    Cursor c = qBuilder.query(mDb,
                            projection,
                            selection,
                            selectionArgs,
                            groupBy,
                            having,
                            sortOrder);
                    c.setNotificationUri(getContext().getContentResolver(), uri);
                    return c;

이 메서드를 구현하는 경우 취소 신호 오버로드를 사용할 수 없는 이전 버전의 Android Framework에서 올바른 작업을 보장하기 위해 취소 신호를 받지 않는 버전을 #query(Uri, String[], String, String[], String) 구현해야 합니다.

에 대한 android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

Query(Uri, String[], Bundle, CancellationSignal)

인수 Bundle가 압축되는 쿼리 요청을 처리하도록 구현합니다.

[Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Landroid_os_Bundle_Landroid_os_CancellationSignal_Handler", ApiSince=26)]
public virtual Android.Database.ICursor? Query (Android.Net.Uri uri, string[]? projection, Android.OS.Bundle? queryArgs, Android.OS.CancellationSignal? cancellationSignal);
[<Android.Runtime.Register("query", "(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;", "GetQuery_Landroid_net_Uri_arrayLjava_lang_String_Landroid_os_Bundle_Landroid_os_CancellationSignal_Handler", ApiSince=26)>]
abstract member Query : Android.Net.Uri * string[] * Android.OS.Bundle * Android.OS.CancellationSignal -> Android.Database.ICursor
override this.Query : Android.Net.Uri * string[] * Android.OS.Bundle * Android.OS.CancellationSignal -> Android.Database.ICursor

매개 변수

uri
Uri

쿼리할 URI입니다. 클라이언트에서 보낸 전체 URI입니다.

projection
String[]

커서에 넣을 열 목록입니다. 기본 열 집합을 제공하는 경우 null

queryArgs
Bundle

작업에 필요한 추가 정보가 포함된 번들입니다. 인수에는 SQL 스타일 인수(예: ContentResolver#QUERY_ARG_SQL_LIMIT)가 포함될 수 있지만 각 개별 공급자에 대한 설명서는 지원하는 인수를 나타냅니다.

cancellationSignal
CancellationSignal

진행 중인 작업을 취소하는 신호 또는 null.

반환

커서 또는 null.

특성

설명

인수 Bundle가 압축되는 쿼리 요청을 처리하도록 구현합니다. 인수에는 기존 SQL 스타일 쿼리 인수가 포함될 수 있습니다. 있는 경우 이러한 작업은 에 설정된 #query(Uri, String[], String, String[], String, CancellationSignal)계약에 따라 처리해야 합니다.

기존 SQL 인수는 다음 키를 사용하여 번들에서 찾을 수 있습니다. <li li liandroid.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS><>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION<>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER

프로세스 및 스레드에 설명된 대로 여러 스레드에서 이 메서드를 호출할 수 있습니다.

클라이언트 호출 예제:

// Request 20 records starting at row index 30.
                   Bundle queryArgs = new Bundle();
                   queryArgs.putInt(ContentResolver.QUERY_ARG_OFFSET, 30);
                   queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, 20);

                   Cursor cursor = getContentResolver().query(
                            contentUri,    // Content Uri is specific to individual content providers.
                            projection,    // String[] describing which columns to return.
                            queryArgs,     // Query arguments.
                            null);         // Cancellation signal.

구현 예:

int recordsetSize = 0x1000;  // Actual value is implementation specific.
                    queryArgs = queryArgs != null ? queryArgs : Bundle.EMPTY;  // ensure queryArgs is non-null

                    int offset = queryArgs.getInt(ContentResolver.QUERY_ARG_OFFSET, 0);
                    int limit = queryArgs.getInt(ContentResolver.QUERY_ARG_LIMIT, Integer.MIN_VALUE);

                    MatrixCursor c = new MatrixCursor(PROJECTION, limit);

                    // Calculate the number of items to include in the cursor.
                    int numItems = MathUtils.constrain(recordsetSize - offset, 0, limit);

                    // Build the paged result set....
                    for (int i = offset; i < offset + numItems; i++) {
                        // populate row from your data.
                    }

                    Bundle extras = new Bundle();
                    c.setExtras(extras);

                    // Any QUERY_ARG_* key may be included if honored.
                    // In an actual implementation, include only keys that are both present in queryArgs
                    // and reflected in the Cursor output. For example, if QUERY_ARG_OFFSET were included
                    // in queryArgs, but was ignored because it contained an invalid value (like –273),
                    // then QUERY_ARG_OFFSET should be omitted.
                    extras.putStringArray(ContentResolver.EXTRA_HONORED_ARGS, new String[] {
                        ContentResolver.QUERY_ARG_OFFSET,
                        ContentResolver.QUERY_ARG_LIMIT
                    });

                    extras.putInt(ContentResolver.EXTRA_TOTAL_COUNT, recordsetSize);

                    cursor.setNotificationUri(getContext().getContentResolver(), uri);

                    return cursor;

구현 세부 정보는 참조 #query(Uri, String[], String, String[], String, CancellationSignal) 하세요.

에 대한 android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상