0

テーブルを含むコンテンツプロバイダーがあり、キー値「key1」query()を使用して特定のエントリをクエリしたいので、コンテンツプロバイダーのメソッドで次のことを行いました。

    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        qb.setTables(TABLE_NAME);
        Cursor c = qb.query(db, projection, selection, null, null, null, sortOrder);
        c.setNotificationUri(getContext().getContentResolver(), uri);
        return c;
    }

String selection2番目の引数としてを構築するにはどうすればよいですか?選択範囲を「key='key1'」に設定しようとしましたが、失敗しました。

現在、コンテンツプロバイダーがあり、テーブルは1つしかありません。?を介してテーブルを直接参照する方法はありますURIか?今、私はを使用する必要がありますURI/Table_name

ありがとうございました!

4

1 に答える 1

1

あなたの質問からは明らかではありませんが、おそらく余分な引用符が問題です。選択文字列は、key = "key1"(またはkey ='key1')のようにする必要があります。

また、プロバイダーはUriを任意の方法で解釈できますが、標準的な方法は、UriMatcherを使用して、テーブル名で指定することです(URI / Table_nameの場合と同様)。

于 2013-02-26T21:35:12.887 に答える