在Android中使用关系进行数据库查询

时间:2010-10-22 10:16:42

标签: android sqlite cursor relationships

假设我有以下表格

sqlite> SELECT * FROM Artists;
ArtistID|ArtistName
1       |Peter Gabriel
2       |Bruce Hornsby
3       |Lyle Lovett
4       |Beach Boys
5       |Supernatural

sqlite> SELECT * FROM CDs;
CDID|ArtistID|Title              |Date
1   |1       |So                 |1984
2   |1       |Us                 |1992
3   |2       |The Way It Is      |1986
4   |2       |Scenes from the Southside|1990
5   |1       |Security           |1990
6   |3       |Joshua Judges Ruth |1992
7   |4       |Pet Sounds         |1966

我想进行此类查询

sqlite>SELECT ArtistID as _id, ArtistName, Title FROM Artists, CDs WHERE Artists.ArtistID=CDs.ArtistID;  

我如何使用Android SQLiteQueryBuilder类使用它,我需要为我的投影地图添加什么?

或者使用SQLiteDataBase类会更容易吗?

2 个答案:

答案 0 :(得分:0)

  

如何使用Android SQLiteQueryBuilder类

来使用它

好吧,我只是在rawQuery()上使用SQLiteDatabase,因为你知道SQL并拥有SQL。

如果某人持枪强迫您使用SQLiteQueryBuilder,您的投影地图可能会将ArtistName映射到ArtistNameArtists.ArtistName和{{1} } TitleTitle。我没有将CDs.Title与隐式(或显式)SQLiteQueryBuilder一起使用,部分原因是我在编写内容提供商时仅使用JOIN

答案 1 :(得分:0)

好的我明白了。仍然必须硬编码where语句。

projectionMap.put(ArtistID, ArtistID + " AS " + _ID);
projectionMap.put(Title, Title);
queryBuilder.setProjectionMap(projectionMap);