8
votes

Création de classe de modèle de données pour la manipulation de la base de données

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 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: xxx pré>

// DatabaseAdapterclass p> xxx pré>

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);
}
}  


0 commentaires

3 Réponses :


0
votes

La modélisation des données d'approche native de Android est des fournisseurs de contenu. Lien

Il est également abstrait du type de source de données également.

J'avais l'habitude de le faire de la même manière. Mais encore une fois c'est aussi subjectif.


0 commentaires

12
votes

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 d'étudiant 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 ( base de donnéesHelper ) interroge la base de données et utilisez les données qu'il reçoit pour retourner étudiant objets ou a Liste <Étudiant> . 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.

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 ( cursoradapter , etc.). Si vous souhaitez utiliser une de cela, vous devriez exposer vos données non comme des objets de modèle, mais comme curseur . 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 pourrait être surchargé.

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.


0 commentaires

1
votes

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.


0 commentaires