8

私はAndroidの初心者です。実際には、コンテンツ プロバイダーとコンテンツ リゾルバーを使用して、メディア プロバイダーからデータをクエリしたいと考えています。

c = mContent.query(CONTENT_URI,projection,where,null,null); 

GROUP BY私の質問は、句を使用して、以下のようにメディアプロバイダーからデータを照会するにはどうすればよいですか?

select DISTINCT _id, count(_id), _data FROM aaa_table WHERE _data LIKE "A" OR _data LIKE "B" GROUP BY _id;

私は次のように設定projectionしてみwhereました:

 final String[] projection = new String[] {
                "_id", 
                "COUNT ("+ _id +")" ,
                "_data" 
                }; 

where:

_data LIKE "A" OR _data LIKE "B"

しかし、クエリ オプションの設定方法がわかりませんでしたGROUP BY _id

私を助けてください。

4

5 に答える 5

4

からはできませんContentProvider。今、あなたが書いているなら、それContentProviderを実装することができます。コンテンツ プロバイダ内では、文字列を受け取るメソッドSQLiteQueryBuilderを持つクラスを使用する必要があります。query()GROUP BY

http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html

このクラスにはsetDistinct(true)、SQL ステートメントで必要であると示したように、クエリを DISTINCT として設定するメソッドもあります。

于 2010-06-03T19:45:38.967 に答える
3

それが可能かどうかはわかりません。

私は最近似たようなことに苦労していましたが、データをContentProvider一時テーブルに挿入し、テーブルに結果を照会することで回避できました。

話は、 の背後にあるデータContentProviderがデータベースではない可能性があるということです。GROUP BYXML、JSON、FileSystemなどの可能性があります...したがって、これらにはオプションがないため、省略されました。また、常にうまくcount(_id)いくとは限りません。

于 2010-06-03T11:35:56.110 に答える