ContentProvider.Query Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| Query(Uri, String[], String, String[], String) |
Implemente esto para controlar las solicitudes de consulta de los clientes. |
| Query(Uri, String[], String, String[], String, CancellationSignal) |
Implemente esto para controlar las solicitudes de consulta de los clientes con compatibilidad con la cancelación. |
| Query(Uri, String[], Bundle, CancellationSignal) |
Implemente esto para controlar las solicitudes de consulta en las que los argumentos se empaquetan en un |
Query(Uri, String[], String, String[], String)
Implemente esto para controlar las solicitudes de consulta de los 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
Identificador URI que se va a consultar. Este será el URI completo enviado por el cliente; Si el cliente solicita un registro específico, el URI finalizará en un número de registro que la implementación debe analizar y agregar a una cláusula WHERE o HAVING, especificando ese valor _id.
- projection
- String[]
Lista de columnas que se van a colocar en el cursor. Si null se incluyen todas las columnas.
- selection
- String
Criterios de selección que se aplicarán al filtrar filas.
Si null se incluyen todas las filas.
- selectionArgs
- String[]
Puede incluir ?s en la selección, que se reemplazará por los valores de selectionArgs, en orden en que aparecen en la selección. Los valores se enlazarán como Cadenas.
- sortOrder
- String
Cómo se deben ordenar las filas del cursor.
Si null el proveedor es libre de definir el criterio de ordenación.
Devoluciones
un cursor o null.
- Atributos
Comentarios
Implemente esto para controlar las solicitudes de consulta de los clientes.
Las aplicaciones que tienen como destino android.os.Build.VERSION_CODES#O o superior deben invalidar #query(Uri, String[], Bundle, CancellationSignal) y proporcionar una implementación de código auxiliar de este método.
Se puede llamar a este método desde varios subprocesos, como se describe en Procesos y subprocesos.
Llamada de cliente de ejemplo:
// 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.
Implementación de ejemplo:
// 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;
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Se aplica a
Query(Uri, String[], String, String[], String, CancellationSignal)
Implemente esto para controlar las solicitudes de consulta de los clientes con compatibilidad con la cancelación.
[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
Identificador URI que se va a consultar. Este será el URI completo enviado por el cliente; Si el cliente solicita un registro específico, el URI finalizará en un número de registro que la implementación debe analizar y agregar a una cláusula WHERE o HAVING, especificando ese valor _id.
- projection
- String[]
Lista de columnas que se van a colocar en el cursor. Si null se incluyen todas las columnas.
- selection
- String
Criterios de selección que se aplicarán al filtrar filas.
Si null se incluyen todas las filas.
- selectionArgs
- String[]
Puede incluir ?s en la selección, que se reemplazará por los valores de selectionArgs, en orden en que aparecen en la selección. Los valores se enlazarán como Cadenas.
- sortOrder
- String
Cómo se deben ordenar las filas del cursor.
Si null el proveedor es libre de definir el criterio de ordenación.
- cancellationSignal
- CancellationSignal
Señal para cancelar la operación en curso o null si no existe.
Si se cancela la operación, android.os.OperationCanceledException se producirá cuando se ejecute la consulta.
Devoluciones
un cursor o null.
- Atributos
Comentarios
Implemente esto para controlar las solicitudes de consulta de los clientes con compatibilidad con la cancelación.
Las aplicaciones que tienen como destino android.os.Build.VERSION_CODES#O o superior deben invalidarse #query(Uri, String[], Bundle, CancellationSignal) en lugar de este método.
Se puede llamar a este método desde varios subprocesos, como se describe en Procesos y subprocesos.
Llamada de cliente de ejemplo:
// 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.
Implementación de ejemplo:
// 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;
Si implementa este método, también debe implementar la versión de que no toma una señal de #query(Uri, String[], String, String[], String) cancelación para garantizar una operación correcta en versiones anteriores de Android Framework en las que la sobrecarga de señal de cancelación no estaba disponible.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Se aplica a
Query(Uri, String[], Bundle, CancellationSignal)
Implemente esto para controlar las solicitudes de consulta en las que los argumentos se empaquetan en un 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
Identificador URI que se va a consultar. Este será el URI completo enviado por el cliente.
- projection
- String[]
Lista de columnas que se van a colocar en el cursor.
Si null proporciona un conjunto predeterminado de columnas.
- queryArgs
- Bundle
Un paquete que contiene información adicional necesaria para la operación. Los argumentos pueden incluir argumentos de estilo SQL, como ContentResolver#QUERY_ARG_SQL_LIMIT, pero tenga en cuenta que la documentación de cada proveedor individual indicará qué argumentos admiten.
- cancellationSignal
- CancellationSignal
Señal para cancelar la operación en curso o null.
Devoluciones
un cursor o null.
- Atributos
Comentarios
Implemente esto para controlar las solicitudes de consulta en las que los argumentos se empaquetan en un Bundle. Los argumentos pueden incluir argumentos de consulta de estilo SQL tradicionales. Cuando estén presentes, estos deben controlarse de acuerdo con el contrato establecido en #query(Uri, String[], String, String[], String, CancellationSignal).
Los argumentos SQL tradicionales se pueden encontrar en la agrupación mediante las siguientes claves: <li<android.content.ContentResolver#QUERY_ARG_SQL_SELECTION>li li>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS<>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER
Se puede llamar a este método desde varios subprocesos, como se describe en Procesos y subprocesos.
Llamada de cliente de ejemplo:
// 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.
Implementación de ejemplo:
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) para obtener más información sobre la implementación.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.