ContentProvider.Query Methode

Definition

Überlädt

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

Implementieren Sie dies, um Abfrageanforderungen von Clients zu verarbeiten.

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

Implementieren Sie dies, um Abfrageanforderungen von Clients mit Unterstützung für den Abbruch zu behandeln.

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

Implementieren Sie dies, um Abfrageanforderungen zu behandeln, bei denen die Argumente in eine Bundlegepackt werden.

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

Implementieren Sie dies, um Abfrageanforderungen von Clients zu verarbeiten.

[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 abzufragende 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 von der Implementierung analysiert und einer WHERE- oder HAVING-Klausel hinzugefügt werden soll, wobei dieser _id Wert angegeben wird.

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 dann 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 , kann der Anbieter die Sortierreihenfolge frei definieren.

Gibt zurück

ein Cursor oder null.

Attribute

Hinweise

Implementieren Sie dies, um Abfrageanforderungen von Clients zu verarbeiten.

Apps mit android.os.Build.VERSION_CODES#O oder höher sollten diese Methode überschreiben #query(Uri, String[], Bundle, CancellationSignal) und eine Stubimplementierung bereitstellen.

Diese Methode kann aus mehreren Threads aufgerufen werden, wie unter Prozesse und Threads beschrieben.

Beispiel für einen Clientaufruf:

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

                    // 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, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Implementieren Sie dies, um Abfrageanforderungen von Clients mit Unterstützung für den Abbruch zu behandeln.

[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 abzufragende 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 von der Implementierung analysiert und einer WHERE- oder HAVING-Klausel hinzugefügt werden soll, wobei dieser _id Wert angegeben wird.

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 dann 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 , kann der Anbieter die Sortierreihenfolge frei definieren.

cancellationSignal
CancellationSignal

Ein Signal, um den laufenden Vorgang abzubrechen, oder null wenn keines vorhanden ist. Wenn der Vorgang abgebrochen wird, wird beim android.os.OperationCanceledException Ausführen der Abfrage ausgelöst.

Gibt zurück

ein Cursor oder null.

Attribute

Hinweise

Implementieren Sie dies, um Abfrageanforderungen von Clients mit Unterstützung für den Abbruch zu behandeln.

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

Diese Methode kann aus mehreren Threads aufgerufen werden, wie unter Prozesse und Threads beschrieben.

Beispiel für einen Clientaufruf:

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

                    // 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 von #query(Uri, String[], String, String[], String) implementieren, die kein Abbruchsignal verwendet, um den korrekten Betrieb in älteren Versionen des Android-Frameworks sicherzustellen, in denen 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, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

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

Implementieren Sie dies, um Abfrageanforderungen zu behandeln, bei denen die Argumente in eine Bundlegepackt werden.

[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 abzufragende 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, das zusätzliche Informationen enthält, die für den Vorgang erforderlich sind. Argumente können ARGUMENTE im SQL-Format enthalten, z ContentResolver#QUERY_ARG_SQL_LIMIT. B. , aber beachten Sie, dass in der Dokumentation für jeden einzelnen Anbieter angegeben wird, welche Argumente von ihnen unterstützt werden.

cancellationSignal
CancellationSignal

Ein Signal zum Abbrechen des laufenden Vorgangs oder null.

Gibt zurück

ein Cursor oder null.

Attribute

Hinweise

Implementieren Sie dies, um Abfrageanforderungen zu behandeln, bei denen die Argumente in eine Bundlegepackt werden. Argumente können herkömmliche Abfrageargumente im SQL-Stil enthalten. Wenn vorhanden, sollten diese gemäß dem in #query(Uri, String[], String, String[], String, CancellationSignal)festgelegten Vertrag behandelt werden.

Herkömmliche SQL-Argumente können im Bundle mit den folgenden Schlüsseln gefunden werden: <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 aus mehreren Threads aufgerufen werden, wie unter Prozesse und Threads beschrieben.

Beispiel für einen Clientaufruf:

// 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 #query(Uri, String[], String, String[], String, CancellationSignal) .

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, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: