ContentProvider.Query Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
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;
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.
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.
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.