ContentProvider.Query Methode

Definition

Überlädt

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

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von Clients.

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

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von Clients mit Unterstützung für den Abbruch.

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

Implementieren Sie dies, um Abfrageanforderungen zu verarbeiten, in denen die Argumente in eine Bundle.

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

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von 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

Parameter

uri
Uri

Der zu abfragende URI. Dies ist der vollständige URI, der vom Client gesendet wird. Wenn der Client einen bestimmten Datensatz anfordert, endet der URI in einer Datensatznummer, die die Implementierung analysieren und einer WHERE- oder HAVING-Klausel hinzufügen soll, und gibt diesen _id Wert an.

projection
String[]

Die Liste der Spalten, die in den Cursor eingefügt werden sollen. Wenn null alle Spalten enthalten sind.

selection
String

Ein Auswahlkriterium, das beim Filtern von Zeilen angewendet werden soll. Wenn null alle Zeilen enthalten sind.

selectionArgs
String[]

Sie können "?s" in die Auswahl einschließen, die durch die Werte aus selectionArgs ersetzt wird, damit sie in der Auswahl angezeigt werden. Die Werte werden als Zeichenfolgen gebunden.

sortOrder
String

Wie die Zeilen im Cursor sortiert werden sollen. Wenn null der Anbieter die Sortierreihenfolge frei definieren kann.

Gibt zurück

ein Cursor oder nullein .

Attribute

Hinweise

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von Clients.

Apps für die Zielbestimmung android.os.Build.VERSION_CODES#O oder höher sollten diese Methode außer Kraft setzen #query(Uri, String[], Bundle, CancellationSignal) und eine Stubimplementierung dieser Methode bereitstellen.

Diese Methode kann von mehreren Threads aufgerufen werden, wie in Prozessen und Threads beschrieben.

Beispiel für Clientanruf:

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

Beispielimplementierung:

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

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von Clients mit Unterstützung für den Abbruch.

[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

Parameter

uri
Uri

Der zu abfragende URI. Dies ist der vollständige URI, der vom Client gesendet wird. Wenn der Client einen bestimmten Datensatz anfordert, endet der URI in einer Datensatznummer, die die Implementierung analysieren und einer WHERE- oder HAVING-Klausel hinzufügen soll, und gibt diesen _id Wert an.

projection
String[]

Die Liste der Spalten, die in den Cursor eingefügt werden sollen. Wenn null alle Spalten enthalten sind.

selection
String

Ein Auswahlkriterium, das beim Filtern von Zeilen angewendet werden soll. Wenn null alle Zeilen enthalten sind.

selectionArgs
String[]

Sie können "?s" in die Auswahl einschließen, die durch die Werte aus selectionArgs ersetzt wird, damit sie in der Auswahl angezeigt werden. Die Werte werden als Zeichenfolgen gebunden.

sortOrder
String

Wie die Zeilen im Cursor sortiert werden sollen. Wenn null der Anbieter die Sortierreihenfolge frei definieren kann.

cancellationSignal
CancellationSignal

Ein Signal zum Abbrechen des laufenden Vorgangs oder null wenn keines. Wenn der Vorgang abgebrochen wird, wird der android.os.OperationCanceledException Vorgang ausgelöst, wenn die Abfrage ausgeführt wird.

Gibt zurück

ein Cursor oder nullein .

Attribute

Hinweise

Implementieren Sie dies zum Behandeln von Abfrageanforderungen von Clients mit Unterstützung für den Abbruch.

Apps, die als Ziel android.os.Build.VERSION_CODES#O oder höher verwendet werden, sollten anstelle dieser Methode außer Kraft setzen #query(Uri, String[], Bundle, CancellationSignal) .

Diese Methode kann von mehreren Threads aufgerufen werden, wie in Prozessen und Threads beschrieben.

Beispiel für Clientanruf:

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

Beispielimplementierung:

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

Wenn Sie diese Methode implementieren, müssen Sie auch die Version #query(Uri, String[], String, String[], String) dieser Methode implementieren, die kein Abbruchsignal verwendet, um den korrekten Betrieb in älteren Versionen des Android-Frameworks sicherzustellen, in dem die Abbruchsignalüberladung nicht verfügbar war.

Java Dokumentation für android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Implementieren Sie dies, um Abfrageanforderungen zu verarbeiten, in denen die Argumente in eine 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

Parameter

uri
Uri

Der zu abfragende URI. Dies ist der vollständige URI, der vom Client gesendet wird.

projection
String[]

Die Liste der Spalten, die in den Cursor eingefügt werden sollen. Wenn null Sie einen Standardsatz von Spalten angeben.

queryArgs
Bundle

Ein Bundle mit zusätzlichen Informationen, die für den Vorgang erforderlich sind. Argumente können SQL-Formatargumente enthalten, z ContentResolver#QUERY_ARG_SQL_LIMIT. B. , beachten Sie jedoch, dass in der Dokumentation für jeden einzelnen Anbieter angegeben wird, welche Argumente unterstützt werden.

cancellationSignal
CancellationSignal

Ein Signal zum Abbrechen des vorgangs in Bearbeitung oder null.

Gibt zurück

ein Cursor oder nullein .

Attribute

Hinweise

Implementieren Sie dies, um Abfrageanforderungen zu verarbeiten, in denen die Argumente in eine Bundle. Argumente können herkömmliche SQL-Abfrageargumente enthalten. Sofern vorhanden, sollten diese gemäß dem vertrag geregelt werden, der in #query(Uri, String[], String, String[], String, CancellationSignal).

Herkömmliche SQL-Argumente finden Sie im Bundle mit den folgenden Schlüsseln: <li 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

Diese Methode kann von mehreren Threads aufgerufen werden, wie in Prozessen und Threads beschrieben.

Beispiel für Clientanruf:

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

Beispielimplementierung:

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;

Details zur Implementierung finden Sie unter.See #query(Uri, String[], String, String[], String, CancellationSignal) for implementation details.

Java Dokumentation für android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: