Как работать с результатами нескольких курсоров - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть 4 таблицы в моей базе данных SQLite.Один с вопросами, другой с ответами с внешним ключом с идентификатором вопроса, одной таблицей категорий и одной таблицей категорий вопросов, которая содержит отношение «многие ко многим» между вопросами и категориями (каждый вопрос может принадлежать нескольким категориям).

Итак, в моем приложении для Android я хочу извлечь один вопрос за раз со всеми принадлежащими ему данными.Мне нужна помощь, как правильно с этим справиться.Должен ли я создать в моем объекте доступа к данным один метод с именем, подобным getQuestionSet(int questionId), который делегирует дальнейшие вызовы методов в таблицу вопросов, таблицу ответов и т. Д. С параметром questionId в качестве условия where?Или я должен сделать вид, что этот sql-запрос уже сохранен?Но тогда будет несколько строк, содержащих вопрос-текст, потому что есть 4 ответа на каждый вопрос.Или есть другие решения?

Кроме того, если мне нужно сделать первый подход, создать ли объект передачи данных, который содержит ссылки на курсоры?

1 Ответ

0 голосов
/ 19 сентября 2011

Всегда старайтесь выполнять один запрос к базе данных, когда это возможно, это намного быстрее и требует меньше усилий для управления.Вы можете использовать операцию INNER JOIN, чтобы получить вопрос и ответы в одном Курсоре.Результат может содержать дубликаты данных, но в этом нет никакого вреда.Ваш результирующий курсор может выглядеть так:

_id, answer, question
1, Answer 1 Text, Question Text
2, Answer 2 Text, Question Text (same Question as above)
3, Answer 3 Text, Question Text (same Question as above)

Вы знаете, что в этом запросе текст вопроса всегда одинаков, поэтому вы можете просто прочитать его из первой строки и игнорировать остальные.

Делать вид или нет - решать вам, но, вероятно, в этом нет необходимости.

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