ContentProvider.Query Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
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 Attribution.
Применяется к
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
при выполнении запроса будет возникать ошибка.
Возвращаемое значение
курсор или 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;
Если вы реализуете этот метод, необходимо также реализовать версию #query(Uri, String[], String, String[], String)
, которая не принимает сигнал отмены, чтобы обеспечить правильную операцию в старых версиях Android Framework, в которой перегрузка сигнала отмены недоступна.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
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 Attribution.