ContentProvider.Query メソッド

定義

オーバーロード

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

これを実装して、クライアントからのクエリ要求を処理します。

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

これを実装して、キャンセルをサポートするクライアントからのクエリ要求を処理します。

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

引数が にパックされているクエリ要求を処理するには、 Bundleこれを実装します。

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 、プロバイダーは自由に並べ替え順序を定義できます。

戻り値

Cursor または 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();

                    // 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.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

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 クエリの実行時にスローされます。

戻り値

Cursor または 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();

                    // 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) Android Framework で正しい操作を行うために、キャンセルシグナルを受け取らない バージョンの も実装する必要があります。

android.content.ContentProvider.query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

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_LIMITSQL スタイルの引数を含めることができますが、各プロバイダーのドキュメントには、サポートする引数が示されることに注意してください。

cancellationSignal
CancellationSignal

進行中の操作を取り消すシグナル ()。null

戻り値

Cursor または null

属性

注釈

引数が にパックされているクエリ要求を処理するには、 Bundleこれを実装します。 引数には、従来の SQL スタイルのクエリ引数を含めることができます。 存在する場合、これらは で #query(Uri, String[], String, String[], String, CancellationSignal)確立された契約に従って処理する必要があります。

従来の SQL 引数は、次のキーを使用してバンドルで見つけることができます: <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

このメソッドは、「 プロセスとスレッド」で説明されているように、複数のスレッドから呼び出すことができます。

クライアント呼び出しの例:

// 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) してください。

android.content.ContentProvider.query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象