ContentProvider.Query 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
Query(Uri, String[], String, String[], String) |
클라이언트의 쿼리 요청을 처리하도록 구현합니다. |
Query(Uri, String[], String, String[], String, CancellationSignal) |
취소를 지원하는 클라이언트의 쿼리 요청을 처리하도록 구현합니다. |
Query(Uri, String[], Bundle, CancellationSignal) |
인수 |
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 오픈 소스 프로젝트에서 만들고 공유하고 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 오픈 소스 프로젝트에서 만들고 공유하고 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 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.