ContentProvider.Query Método

Definição

Sobrecargas

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

Implemente isso para lidar com solicitações de consulta de clientes.

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

Implemente isso para lidar com solicitações de consulta de clientes com suporte para cancelamento.

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

Implemente isso para lidar com solicitações de consulta em que os argumentos são empacotados em um Bundle.

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

Implemente isso para lidar com solicitações de consulta de clientes.

[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

Parâmetros

uri
Uri

O URI a ser consultado. Esse será o URI completo enviado pelo cliente; se o cliente estiver solicitando um registro específico, o URI terminará em um número de registro que a implementação deve analisar e adicionar a uma cláusula WHERE ou HAVING, especificando esse valor _id.

projection
String[]

A lista de colunas a serem colocadas no cursor. Se null todas as colunas estiverem incluídas.

selection
String

Um critério de seleção a ser aplicado ao filtrar linhas. Se null todas as linhas forem incluídas.

selectionArgs
String[]

Você pode incluir ?s na seleção, que será substituída pelos valores de selectionArgs, para que eles apareçam na seleção. Os valores serão associados como Cadeias de Caracteres.

sortOrder
String

Como as linhas no cursor devem ser classificadas. Se null o provedor estiver livre para definir a ordem de classificação.

Retornos

um cursor ou null.

Atributos

Comentários

Implemente isso para lidar com solicitações de consulta de clientes.

Os aplicativos direcionados android.os.Build.VERSION_CODES#O ou superiores devem substituir #query(Uri, String[], Bundle, CancellationSignal) e fornecer uma implementação de stub desse método.

Esse método pode ser chamado de vários threads, conforme descrito em Processos e Threads.

Exemplo de chamada de cliente:

// 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.

Implementação de exemplo:

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

                    // Guard against SQL injection attacks
                    qBuilder.setStrict(true);
                    qBuilder.setProjectionMap(MAP_OF_QUERYABLE_COLUMNS);
                    qBuilder.setStrictColumns(true);
                    qBuilder.setStrictGrammar(true);

                    // 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 documentação para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a

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

Implemente isso para lidar com solicitações de consulta de clientes com suporte para cancelamento.

[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

Parâmetros

uri
Uri

O URI a ser consultado. Esse será o URI completo enviado pelo cliente; se o cliente estiver solicitando um registro específico, o URI terminará em um número de registro que a implementação deve analisar e adicionar a uma cláusula WHERE ou HAVING, especificando esse valor _id.

projection
String[]

A lista de colunas a serem colocadas no cursor. Se null todas as colunas estiverem incluídas.

selection
String

Um critério de seleção a ser aplicado ao filtrar linhas. Se null todas as linhas forem incluídas.

selectionArgs
String[]

Você pode incluir ?s na seleção, que será substituída pelos valores de selectionArgs, para que eles apareçam na seleção. Os valores serão associados como Cadeias de Caracteres.

sortOrder
String

Como as linhas no cursor devem ser classificadas. Se null o provedor estiver livre para definir a ordem de classificação.

cancellationSignal
CancellationSignal

Um sinal para cancelar a operação em andamento ou null se nenhuma. Se a operação for cancelada, será android.os.OperationCanceledException gerada quando a consulta for executada.

Retornos

um cursor ou null.

Atributos

Comentários

Implemente isso para lidar com solicitações de consulta de clientes com suporte para cancelamento.

Os aplicativos direcionados android.os.Build.VERSION_CODES#O ou superiores devem substituir #query(Uri, String[], Bundle, CancellationSignal) em vez desse método.

Esse método pode ser chamado de vários threads, conforme descrito em Processos e Threads.

Exemplo de chamada de cliente:

// 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.

Implementação de exemplo:

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

                    // Guard against SQL injection attacks
                    qBuilder.setStrict(true);
                    qBuilder.setProjectionMap(MAP_OF_QUERYABLE_COLUMNS);
                    qBuilder.setStrictColumns(true);
                    qBuilder.setStrictGrammar(true);

                    // 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;

Se você implementar esse método, também deverá implementar a versão do que não usa um sinal de #query(Uri, String[], String, String[], String) cancelamento para garantir a operação correta em versões mais antigas do Android Framework nas quais a sobrecarga do sinal de cancelamento não estava disponível.

Java documentação para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a

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

Implemente isso para lidar com solicitações de consulta em que os argumentos são empacotados em um 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

Parâmetros

uri
Uri

O URI a ser consultado. Esse será o URI completo enviado pelo cliente.

projection
String[]

A lista de colunas a serem colocadas no cursor. Se null fornecer um conjunto padrão de colunas.

queryArgs
Bundle

Um pacote que contém informações adicionais necessárias para a operação. Os argumentos podem incluir argumentos de estilo SQL, como ContentResolver#QUERY_ARG_SQL_LIMIT, por exemplo, mas observe que a documentação de cada provedor individual indicará quais argumentos eles dão suporte.

cancellationSignal
CancellationSignal

Um sinal para cancelar a operação em andamento ou null.

Retornos

um cursor ou null.

Atributos

Comentários

Implemente isso para lidar com solicitações de consulta em que os argumentos são empacotados em um Bundle. Os argumentos podem incluir argumentos de consulta de estilo SQL tradicionais. Quando presentes, elas devem ser tratadas de acordo com o contrato estabelecido em #query(Uri, String[], String, String[], String, CancellationSignal).

Argumentos SQL tradicionais podem ser encontrados no pacote usando as seguintes chaves: <li>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION<li>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS<li>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER

Esse método pode ser chamado de vários threads, conforme descrito em Processos e Threads.

Exemplo de chamada de cliente:

// 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.

Implementação de exemplo:

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;

Consulte #query(Uri, String[], String, String[], String, CancellationSignal) os detalhes da implementação.

Java documentação para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a