Je commençais à travailler sur une application de base de données lorsque j'ai réalisé que je devrais mettre en œuvre le modèle // DatabaseAdapterclass p> MVC code> car l'application est assez complexe et implique un certain nombre d'opérations de base de données.
En ce qui concerne cela, j'ai décidé de créer une classe de modèle distincte code> pour la manipulation des opérations de base de données. Cette classe aura toutes les méthodes qui me retourneront les données après exécution de la commande SQLITE (sélectionnez par exemple) ou forte> exécutera simplement la commande SQLITE (Supprimer par exemple). Mais ce que je veux, c'est séparer cette classe de
adaptateur de base de données code> classe, où j'ouvre, créer et fermer ma base de données.
Permettez-moi de mettre mon concept en code: private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/**
* onCreate method is called for the 1st time when database doesn't exists.
*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.i(TAG, "Creating DataBase: " + CREATE_STUDENT_TABLE);
db.execSQL(CREATE_STUDENT_TABLE);
}
/**
* onUpgrade method is called when database version changes.
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion);
}
}
3 Réponses :
La modélisation des données d'approche native de Android est des fournisseurs de contenu. Lien P>
Il est également abstrait du type de source de données également. P>
J'avais l'habitude de le faire de la même manière. Mais encore une fois c'est aussi subjectif. p>
Ce que vous parlez de «classe modèle» est plus communément appelé objet d'accès aux données (DAO). Votre modèle serait généralement un ensemble de classes qui détiennent vos données et votre logique professionnelle. Dans votre cas, probablement une classe d'étudiant code> d'étudiant de code> ID, nom, GPA, etc. Propriétés. Si vous souhaitez séparer les données d'accès à partir de votre modèle, vous auriez la classe d'accès à vos données ( Utiliser des classes de modèle (uniquement), cependant, peut ne pas toujours être pratique sur Android, car il a une prise en charge native pour obtenir et afficher des données à partir d'un curseur ( sur une autre note, vous ne voulez pas ouvrir et fermer la base de données sur chaque requête. Il est en fait sûr de la laisser libre, elle sera automatiquement fermée lorsque le processus de votre application meurt. P> base de donnéesHelper (code>) interroge la base de données et utilisez les données qu'il reçoit pour retourner
étudiant code> objets ou a
Liste <Étudiant> Code>. Il n'est vraiment pas difficile de séparer la classe d'accès aux données de l'aide de la base de données, il est préférable d'avoir tout votre code associé à la base de données au même endroit. p>
cursoradapter code>, etc.). Si vous souhaitez utiliser une de cela, vous devriez exposer vos données non comme des objets de modèle, mais comme
curseur code>. En ce qui concerne les fournisseurs de contenu, examinez-les aussi, mais si vous n'avez pas besoin d'exposer vos données à d'autres applications, la rédaction d'un
ContentProvider code> pourrait être surchargé. P>
Je fais cela dans ma candidature et cela fonctionne à merveille, le code est propre et il n'a pas d'impact sur la performance du tout, en particulier avec les téléphones matériels. J'ai essayé toutes les autres approches et j'ai même utilisé un fournisseur de contenu, mais aussi sur des choses compliquées à mon avis. p>