ContentProvider.Query Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ü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 |
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;
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.
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.
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.