46 votes

Meilleures pratiques pour SQLite DB et ContentProvider

Mon application Android est la lecture et l'écriture locale SQLite DB à partir de quelques Activités différentes et un Service. Assez standard. Mais je ne suis pas heureux avec la façon dont j'ai tous les détails base de données stockée en tant que constantes que je puis utiliser n'importe où j'ai accès à la DB. J'ai été conseillé pour envelopper la DB dans un ContentProvider. Ça sonne bien pour moi. Alors que je suis refactoring mon code, j'ai pensé que je voudrais poser:

  • Quelles sont vos pratiques exemplaires pour les DB de stockage de données dans Android?
  • Où et comment avez-vous le magasin "CREATE TABLE", les noms de colonnes, d'autres SQL?
  • Auriez-vous l'esprit de partage d'une liste des classes d'instancier et de ce qui se passe dans chaque (ContentProvider, DatabaseProvider, DatabaseHelper...)?
  • Comment coordonnez-vous la structure de votre Android DB avec un serveur DB disponibles via une interface REST?

Oui, je me rends compte que je suis à l'éternel "où est la Android objet-relation-framework de mapping?". Pour l'instant, je suis surtout curieux de savoir comment vous structurez vos applications Android avec ce qui est disponible dans le SDK standard.

Comme toujours, merci pour les astuces!

17voto

Gray Points 58585

Nous avons été tuning ORMLite sur Android pour un certain temps maintenant et il fonctionne bien. ORMLite prend en charge Android natif de la base de données des appels et prend également en charge d'autres bases de données via JDBC. Vous annoter vos classes, des champs et l'utilisation de la base de classes DAO de persister à SQLite.

  • CREATE TABLE sont traitées mon ORMLite de classes utilitaires. La plupart SQL est pris en charge par les classes DAO.
  • La section Android de la documentation en ligne explique la hiérarchie de classe. Vous mettez en œuvre une DatabaseHelper qui permet de créer une mise à jour de votre base de données. Vos activités s'étendent OrmLiteBaseActivity (ou service ou onglet) qui donne accès à l'aide et DAOs.
  • ORMLite ne fournit pas une solution pour fusionner avec télécommande RESTE des serveurs.

Espérons que cela soit un peu utile.

1voto

Duane Points 185

Pour l'instant, je suis surtout curieux de savoir comment vous structurez vos applications Android avec ce qui est disponible dans le SDK standard.

Je ne suis pas un vrai fan de SQL et de la façon dont il est traité dans android, j'utilise donc l'objet de base de données NeoDatis. Qu'il est fondamentalement juste vous permet de stocker et récupérer des objets Java dans un fichier plat stockées sur l'appareil très facilement. db40 est aussi une autre alternative de l'Objet de Base de données qui fonctionne sur android.

N'ai pas eu de problèmes à l'aide de cette approche, vous pouvez noter que, y compris les NeoDatis bibliothèque permettra d'augmenter votre APK taille par ~700kb.

0voto

broschb Points 3441

Je ne sais pas si j'ai une réponse, à part que je n'aime pas vraiment la façon dont cela est géré, je la trouve aussi très confuse. Je suis généralement le modèle donné dans l'exemple de bloc-notes fourni avec le SDK.

Pour cette raison, je travaille sur mon propre mini-framework ORM, en utilisant des annotations et en gérant tout cela. Jusqu'à présent, tout va bien, mais je n'ai pas encore tout réglé.

0voto

philgiese Points 421

Vous pouvez aussi jeter un coup d'œil à Androrm . C’est un outil open source conçu spécialement pour Android. Cela devrait vous aider avec tout ce qui concerne la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X