1
私は現在、データベースクエリの問題に直面しています。私は、次のスキーマ定義を持つ2つのテーブル、アイテムと詳細を持っている:ContentProvider.Query - URIを使用していないテーブルを選択するには?
items(_id, title, type) <--- _id is primary key
details(_id, _itemid, name, quantity, dosis) <--- _id is primary key. _itemid is foreign key
はさらに私は経由して自分のデータベースにアクセスします。私自身のcontentProvider。私の活動では、すべてのタプルを取得するために詳細テーブルを照会したいが、URIを使用してテーブルを「取得する」方法はわからない。私のクエリは次のとおりです。私のContentProviderクラスで
Uri subItems = Uri.parse("content://tod.dosetracker.provider.Food");
Cursor c = getContentResolver().query(
subItems,
new String[] {"*"},
"_itemid = " + _id,
null,
null);
私は(抜粋)は以下のいる:
public static final String PROVIDER_NAME = "tod.dosetracker.provider.Food";
public static final Uri CONTENT_URI_ITEMS = Uri.parse("content://" + PROVIDER_NAME + "/items");
public static final Uri CONTENT_URI_DETAILS = Uri.parse("content://" + PROVIDER_NAME + "/details");
public static final String _ID = "_id";
public static final String _ITEMID = "_itemid";
public static final String TITLE = "title";
public static final String TYPE = "type";
public static final String NAME = "name";
public static final String DOSIS = "dosis";
public static final String QUANTITY = "quantity";
private static final int ITEM = 1;
private static final int ITEM_ID = 2;
private static final int DETAILS = 3;
private static final int DETAILS_ID = 4;
// URI resource matchers
private static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "items", ITEM);
uriMatcher.addURI(PROVIDER_NAME, "items/#", ITEM_ID);
uriMatcher.addURI(PROVIDER_NAME, "details", DETAILS);
uriMatcher.addURI(PROVIDER_NAME, "details/#", DETAILS_ID);
}
// Database reference name
private SQLiteDatabase foodDB;