ContentProvider.Query メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| Query(Uri, String[], String, String[], String) |
これを実装して、クライアントからのクエリ要求を処理します。 |
| Query(Uri, String[], String, String[], String, CancellationSignal) |
これを実装して、キャンセルをサポートするクライアントからのクエリ要求を処理します。 |
| Query(Uri, String[], Bundle, CancellationSignal) |
引数が |
Query(Uri, String[], String, String[], String)
これを実装して、クライアントからのクエリ要求を処理します。
[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
パラメーター
- uri
- Uri
クエリを実行する URI。 これは、クライアントによって送信された完全な URI になります。クライアントが特定のレコードを要求している場合、URI はレコード番号で終わり、実装は WHERE 句または HAVING 句を解析して追加し、その_id値を指定する必要があります。
- projection
- String[]
カーソルに配置する列の一覧。 すべての列 null 含まれている場合。
- selection
- String
行をフィルター処理するときに適用する選択条件。
null場合は、すべての行が含まれます。
- selectionArgs
- String[]
選択範囲に ?s を含めることができます。これは、選択範囲に表示される順序で selectionArgs の値に置き換えられます。 値は文字列としてバインドされます。
- sortOrder
- String
カーソル内の行の並べ替え方法。
null場合、プロバイダーは並べ替え順序を自由に定義できます。
返品
カーソルまたは null。
- 属性
注釈
これを実装して、クライアントからのクエリ要求を処理します。
android.os.Build.VERSION_CODES#O 以上を対象とするアプリは、#query(Uri, String[], Bundle, CancellationSignal)をオーバーライドし、このメソッドのスタブ実装を提供する必要があります。
このメソッドは、「 プロセスとスレッド」の説明に従って、複数のスレッドから呼び出すことができます。
クライアント呼び出しの例:
// 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.
実装例:
// 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;
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
Query(Uri, String[], String, String[], String, 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")]
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
パラメーター
- uri
- Uri
クエリを実行する URI。 これは、クライアントによって送信された完全な URI になります。クライアントが特定のレコードを要求している場合、URI はレコード番号で終わり、実装は WHERE 句または HAVING 句を解析して追加し、その_id値を指定する必要があります。
- projection
- String[]
カーソルに配置する列の一覧。 すべての列 null 含まれている場合。
- selection
- String
行をフィルター処理するときに適用する選択条件。
null場合は、すべての行が含まれます。
- selectionArgs
- String[]
選択範囲に ?s を含めることができます。これは、選択範囲に表示される順序で selectionArgs の値に置き換えられます。 値は文字列としてバインドされます。
- sortOrder
- String
カーソル内の行の並べ替え方法。
null場合、プロバイダーは並べ替え順序を自由に定義できます。
- cancellationSignal
- CancellationSignal
進行中の操作を取り消すシグナル、または何も null しない場合は。
操作が取り消されると、クエリの実行時に android.os.OperationCanceledException がスローされます。
返品
カーソルまたは null。
- 属性
注釈
これを実装して、キャンセルをサポートするクライアントからのクエリ要求を処理します。
android.os.Build.VERSION_CODES#O 以上を対象とするアプリは、このメソッドの代わりに#query(Uri, String[], Bundle, CancellationSignal)をオーバーライドする必要があります。
このメソッドは、「 プロセスとスレッド」の説明に従って、複数のスレッドから呼び出すことができます。
クライアント呼び出しの例:
// 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.
実装例:
// 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;
このメソッドを実装する場合は、キャンセルシグナルオーバーロードが使用できなかった古いバージョンのAndroid Frameworkで正しい操作を行うために、キャンセルシグナルを受け取らない #query(Uri, String[], String, String[], String) のバージョンも実装する必要があります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
Query(Uri, String[], Bundle, CancellationSignal)
引数が 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
パラメーター
- uri
- Uri
クエリを実行する URI。 これは、クライアントによって送信された完全な URI になります。
- projection
- String[]
カーソルに配置する列の一覧。
null既定の列セットを指定する場合。
- queryArgs
- Bundle
操作に必要な追加情報を含むバンドル。 引数には、 ContentResolver#QUERY_ARG_SQL_LIMITなどの SQL スタイルの引数を含めることができますが、各プロバイダーのドキュメントでは、サポートする引数が示されることに注意してください。
- cancellationSignal
- CancellationSignal
進行中の操作を取り消すシグナル、または null。
返品
カーソルまたは null。
- 属性
注釈
引数が Bundleにパックされているクエリ要求を処理するには、これを実装します。 引数には、従来の SQL スタイルのクエリ引数を含めることができます。 これらが存在する場合は、 #query(Uri, String[], String, String[], String, CancellationSignal)で確立された契約に従って処理する必要があります。
従来の SQL 引数は、次のキーを使用してバンドルで見つけることができます: <li>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION<li>android.content.ContentResolver#QUERY_ARG_SQL_SELECTION_ARGS<li>android.content.ContentResolver#QUERY_ARG_SQL_SORT_ORDER
このメソッドは、「 プロセスとスレッド」の説明に従って、複数のスレッドから呼び出すことができます。
クライアント呼び出しの例:
// 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.
実装例:
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;
実装の詳細については、 #query(Uri, String[], String, String[], String, CancellationSignal) を参照してください。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。