ContentProvider.Query Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 |
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;
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.
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.
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.