Linguaggio

ContentProvider.Query Metodo

Definizione

Overload

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

Implementare questa opzione per gestire le richieste di query dai client.

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

Implementare questa opzione per gestire le richieste di query dai client con supporto per l'annullamento.

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

Implementare questa opzione per gestire le richieste di query in cui gli argomenti vengono compressi in un oggetto Bundle.

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

Implementare questa opzione per gestire le richieste di query dai client.

[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

Parametri

uri
Uri

URI da eseguire per la query. Questo sarà l'URI completo inviato dal client; se il client richiede un record specifico, l'URI terminerà in un numero di record che l'implementazione deve analizzare e aggiungere a una clausola WHERE o HAVING, specificando tale valore _id.

projection
String[]

Elenco di colonne da inserire nel cursore. Se null tutte le colonne sono incluse.

selection
String

Criteri di selezione da applicare durante il filtro delle righe. Se null vengono incluse tutte le righe.

selectionArgs
String[]

È possibile includere ?s nella selezione, che verrà sostituito dai valori di selectionArgs, in ordine di visualizzazione nella selezione. I valori verranno associati come stringhe.

sortOrder
String

Modalità di ordinamento delle righe nel cursore. Se null il provider è libero di definire l'ordinamento.

Valori restituiti

un cursore o null.

Attributi

Commenti

Implementare questa opzione per gestire le richieste di query dai client.

android.os.Build.VERSION_CODES#O Le app destinate o superiori devono eseguire l'override e fornire un'implementazione #query(Uri, String[], Bundle, CancellationSignal) stub di questo metodo.

Questo metodo può essere chiamato da più thread, come descritto in Processi e thread.

Esempio di chiamata 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.

Implementazione di esempio:

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

per android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a

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

Implementare questa opzione per gestire le richieste di query dai client con supporto per l'annullamento.

[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

Parametri

uri
Uri

URI da eseguire per la query. Questo sarà l'URI completo inviato dal client; se il client richiede un record specifico, l'URI terminerà in un numero di record che l'implementazione deve analizzare e aggiungere a una clausola WHERE o HAVING, specificando tale valore _id.

projection
String[]

Elenco di colonne da inserire nel cursore. Se null tutte le colonne sono incluse.

selection
String

Criteri di selezione da applicare durante il filtro delle righe. Se null vengono incluse tutte le righe.

selectionArgs
String[]

È possibile includere ?s nella selezione, che verrà sostituito dai valori di selectionArgs, in ordine di visualizzazione nella selezione. I valori verranno associati come stringhe.

sortOrder
String

Modalità di ordinamento delle righe nel cursore. Se null il provider è libero di definire l'ordinamento.

cancellationSignal
CancellationSignal

Segnale per annullare l'operazione in corso o null in caso contrario. Se l'operazione viene annullata, android.os.OperationCanceledException verrà generata quando viene eseguita la query.

Valori restituiti

un cursore o null.

Attributi

Commenti

Implementare questa opzione per gestire le richieste di query dai client con supporto per l'annullamento.

Le app destinate android.os.Build.VERSION_CODES#O o superiori devono eseguire l'override #query(Uri, String[], Bundle, CancellationSignal) invece di questo metodo.

Questo metodo può essere chiamato da più thread, come descritto in Processi e thread.

Esempio di chiamata 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.

Implementazione di esempio:

// 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 si implementa questo metodo, è necessario implementare anche la versione di che non accetta un segnale di annullamento per garantire un'operazione corretta nelle versioni precedenti di Android Framework in cui l'overload del segnale di #query(Uri, String[], String, String[], String) annullamento non era disponibile.

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

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a

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

Implementare questa opzione per gestire le richieste di query in cui gli argomenti vengono compressi in un oggetto 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

Parametri

uri
Uri

URI da eseguire per la query. Questo sarà l'URI completo inviato dal client.

projection
String[]

Elenco di colonne da inserire nel cursore. Se null specificare un set predefinito di colonne.

queryArgs
Bundle

Bundle contenente informazioni aggiuntive necessarie per l'operazione. Gli argomenti possono includere argomenti di stile SQL, ad esempio ContentResolver#QUERY_ARG_SQL_LIMIT, ma si noti che la documentazione per ogni singolo provider indicherà gli argomenti supportati.

cancellationSignal
CancellationSignal

Segnale per annullare l'operazione in corso o null.

Valori restituiti

un cursore o null.

Attributi

Commenti

Implementare questa opzione per gestire le richieste di query in cui gli argomenti vengono compressi in un oggetto Bundle. Gli argomenti possono includere argomenti di query di stile SQL tradizionali. Quando presenti, questi devono essere gestiti in base al contratto stabilito in #query(Uri, String[], String, String[], String, CancellationSignal).

Gli argomenti SQL tradizionali sono disponibili nel bundle usando le chiavi seguenti: <li>liandroid.content.ContentResolver#QUERY_ARG_SQL_SELECTION<>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS<>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER

Questo metodo può essere chiamato da più thread, come descritto in Processi e thread.

Esempio di chiamata 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.

Implementazione di esempio:

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;

Vedere #query(Uri, String[], String, String[], String, CancellationSignal) per informazioni dettagliate sull'implementazione.

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

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a