Поделиться через


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;

Документация по Java для android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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, в которой перегрузка сигнала отмены недоступна.

Документация по Java для android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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) . сведения о реализации.

Документация по Java для android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к