2012-07-27 5 views
0

J'ai la structure de données suivantes pour les films SQLite db (je vais garder les choses simples, les vraies tables ont d'autres champs):données de récupération - requête SQLite vs stockage et la récupération des données de la mémoire

  • genre - (id, nom)
  • film - (id, GenreId, nom, année)
  • scènes - (id, MovieID, nom)

par exemple:

  • genre - (7, thriller)
  • film - (250, 7, Sixième Sens, 1999)
  • scènes - (15, 250, je vois des morts)

Je les données stockées dans une base de données SQLite sur mon application Android. J'ai une classe de gestionnaire de données que j'utilise pour récupérer les données pertinentes.

Je dois être en mesure de faire ce qui suit:

  • obtenir tous les genres
  • obtenir tous les films par id genre (+ le abbilty pour trier selon différents champs)
  • obtenir un film SPECIFIQUE élément selon id film
  • obtenir toutes les scènes selon id film
  • ...

Je voudrais savoir, la performance Wize, quelle est la meilleure façon d'aborder ces données:

  1. effectuer une requête SQLite chaque fois que je besoin d'obtenir des données.
  2. après avoir obtenu des données une fois de th db, le stocker dans une liste de tableau et gardant ainsi en mémoire, par exemple - ArrayList des genres, où un objet genre détient une liste de tableau d'objets film ...
  3. même que option 2 mais avec des cartes de hachage. Dans ce cas, lorsque vous faites une boucle sur la carte, existe-t-il un moyen de contrôler l'ordre des objets?
  4. une autre option qui vous vient à l'esprit?

Répondre

0

Habituellement, vous récupérez des données de la base de données et utilisez CursorAdapter pour représenter les données dans un ListView. Donc, je suppose que c'est le moyen le plus efficace. Si vous avez des activités différentes pour vos tables, jusqu'à ce qu'elles soient détruites, elles stockent vos données en mémoire.

+0

Merci pour votre commentaire :) ListView n'est pas toujours le cas dans mon projet. Je veux avoir une manière plus générique d'aller chercher ces données pour qu'elles correspondent à tous les scénarios possibles. – dors

+0

Dans tous les cas, il vaut mieux utiliser Cursors qu'avec ArrayLists car les Cursors seront plus rapides. – Yury

+0

mais qu'en est-il de la requête db que vous utilisez pour obtenir le curseur? n'est-il pas préférable de garder les résultats en mémoire que d'effectuer une requête chaque fois que vous avez besoin de données? – dors

Questions connexes