Запрос к базе данных со связями в Android - PullRequest
0 голосов
/ 22 октября 2010

предположим, у меня есть следующие таблицы

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, что делатьМне нужно поставить для моей projectionMap?

Или было бы проще просто использовать класс SQLiteDataBase?

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Хорошо, я понял это. Все равно пришлось жестко закодировать оператор where.

projectionMap.put(ArtistID, ArtistID + " AS " + _ID);
projectionMap.put(Title, Title);
queryBuilder.setProjectionMap(projectionMap);
0 голосов
/ 22 октября 2010

Как я могу использовать это, используя класс Android SQLiteQueryBuilder

Ну, я бы просто использовал rawQuery() на SQLiteDatabase для этого, так как вы знаете SQL и имеете SQL.

Если кто-то приставил пистолет к вашей голове, чтобы заставить вас использовать SQLiteQueryBuilder, ваша карта проекции, вероятно, отображает ArtistName на ArtistName или Artists.ArtistName и Title на Title илиCDs.Title.Я не использовал SQLiteQueryBuilder с неявным (или явным) JOIN, отчасти потому, что я использую SQLiteQueryBuilder только когда пишу контент-провайдер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...