ContentProvider.Query Método

Definición

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

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;

Java documentación para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String).

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.

Java documentación para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal).

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.

Java documentación para android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal).

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