Langue

ContentProvider.Query Méthode

Définition

Surcharges

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

Implémentez ceci pour gérer les requêtes des clients.

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

Implémentez cette opération pour gérer les requêtes des clients avec prise en charge de l’annulation.

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

Implémentez ceci pour gérer les requêtes où les arguments sont empaquetés dans un Bundle.

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

Implémentez ceci pour gérer les requêtes des clients.

[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

Paramètres

uri
Uri

URI à interroger. Il s’agit de l’URI complet envoyé par le client ; si le client demande un enregistrement spécifique, l’URI se termine par un numéro d’enregistrement que l’implémentation doit analyser et ajouter à une clause WHERE ou HAVING, en spécifiant cette valeur _id.

projection
String[]

Liste des colonnes à placer dans le curseur. Si null toutes les colonnes sont incluses.

selection
String

Critères de sélection à appliquer lors du filtrage des lignes. Si null toutes les lignes sont incluses.

selectionArgs
String[]

Vous pouvez inclure ?s dans la sélection, qui sera remplacée par les valeurs de selectionArgs, afin qu’elles apparaissent dans la sélection. Les valeurs seront liées sous forme de chaînes.

sortOrder
String

Comment les lignes du curseur doivent être triées. Si null le fournisseur est libre de définir l’ordre de tri.

Retours

un curseur ou null.

Attributs

Remarques

Implémentez ceci pour gérer les requêtes des clients.

Les applications ciblant android.os.Build.VERSION_CODES#O ou supérieure doivent remplacer #query(Uri, String[], Bundle, CancellationSignal) et fournir une implémentation stub de cette méthode.

Cette méthode peut être appelée à partir de plusieurs threads, comme décrit dans Processus et Threads.

Exemple d’appel client :

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

Exemple d’implémentation :

// 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 documentation pour android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à

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

Implémentez cette opération pour gérer les requêtes des clients avec prise en charge de l’annulation.

[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

Paramètres

uri
Uri

URI à interroger. Il s’agit de l’URI complet envoyé par le client ; si le client demande un enregistrement spécifique, l’URI se termine par un numéro d’enregistrement que l’implémentation doit analyser et ajouter à une clause WHERE ou HAVING, en spécifiant cette valeur _id.

projection
String[]

Liste des colonnes à placer dans le curseur. Si null toutes les colonnes sont incluses.

selection
String

Critères de sélection à appliquer lors du filtrage des lignes. Si null toutes les lignes sont incluses.

selectionArgs
String[]

Vous pouvez inclure ?s dans la sélection, qui sera remplacée par les valeurs de selectionArgs, afin qu’elles apparaissent dans la sélection. Les valeurs seront liées sous forme de chaînes.

sortOrder
String

Comment les lignes du curseur doivent être triées. Si null le fournisseur est libre de définir l’ordre de tri.

cancellationSignal
CancellationSignal

Signal d’annulation de l’opération en cours, ou null s’il n’en a pas. Si l’opération est annulée, elle android.os.OperationCanceledException est levée lors de l’exécution de la requête.

Retours

un curseur ou null.

Attributs

Remarques

Implémentez cette opération pour gérer les requêtes des clients avec prise en charge de l’annulation.

Les applications ciblant ou supérieure doivent être remplacées android.os.Build.VERSION_CODES#O#query(Uri, String[], Bundle, CancellationSignal) au lieu de cette méthode.

Cette méthode peut être appelée à partir de plusieurs threads, comme décrit dans Processus et Threads.

Exemple d’appel client :

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

Exemple d’implémentation :

// 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 vous implémentez cette méthode, vous devez également implémenter la version de #query(Uri, String[], String, String[], String) ce qui ne prend pas de signal d’annulation pour garantir une opération correcte sur les versions antérieures d’Android Framework dans lesquelles la surcharge du signal d’annulation n’a pas été disponible.

Java documentation pour android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à

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

Implémentez ceci pour gérer les requêtes où les arguments sont empaquetés dans 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

Paramètres

uri
Uri

URI à interroger. Il s’agit de l’URI complet envoyé par le client.

projection
String[]

Liste des colonnes à placer dans le curseur. Si null vous fournissez un ensemble de colonnes par défaut.

queryArgs
Bundle

Offre groupée contenant des informations supplémentaires nécessaires à l’opération. Les arguments peuvent inclure des arguments de style SQL, tels que ContentResolver#QUERY_ARG_SQL_LIMIT, mais notez que la documentation de chaque fournisseur individuel indique quels arguments ils prennent en charge.

cancellationSignal
CancellationSignal

Signal d’annulation de l’opération en cours, ou null.

Retours

un curseur ou null.

Attributs

Remarques

Implémentez ceci pour gérer les requêtes où les arguments sont empaquetés dans un Bundle. Les arguments peuvent inclure des arguments de requête de style SQL traditionnels. Lorsqu’elles sont présentes, elles doivent être gérées en fonction du contrat établi en #query(Uri, String[], String, String[], String, CancellationSignal).

Vous trouverez des arguments SQL traditionnels dans le bundle à l’aide des clés suivantes : <li>liandroid.content.ContentResolver#QUERY_ARG_SQL_SELECTION<>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS<>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER

Cette méthode peut être appelée à partir de plusieurs threads, comme décrit dans Processus et Threads.

Exemple d’appel client :

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

Exemple d’implémentation :

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;

Consultez #query(Uri, String[], String, String[], String, CancellationSignal) les détails de l’implémentation.

Java documentation pour android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à