La création du modèle de données de la classe pour la manipulation de la base de données
Je viens de commencer à travailler sur une application de base de données quand j'ai réalisé que je devrais mettre en œuvre MVC
motif que 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 un model class
pour la manipulation des opérations de base de données. Cette classe aura toutes les méthodes qui va me rendre les données après l'exécution de Sqlite commande(Sélectionnez par exemple) OU sera simplement exécuter le SQLite commande(Supprimer par exemple). Mais ce que je veux, c'est de séparer cette classe de Database Adapter
classe, où je ouvrir, de créer et de fermer ma base de données.
Permettez-moi de mettre mon concept dans le code :
public class DataModel
{
/*
Private members
*/
// Method to Select data from Student table
public ArrayList<String> FetchStudents (parameter 1)
{
private ArrayList<String> arrStudent;
DatabaseAdapter objDB= new DatabaseAdapter();
objDB.open();
/*
Some code
*/
objDB.close();
return arrStudent
}
//Method to delete record from Student table
public DeleteStudent(parameter 1)
{
DatabaseAdapter objDB= new DatabaseAdapter();
objDB.open();
//Some code
objDB.close();
}
/*
Rest of methods
*/
}
//DatabaseAdapterClass
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);
}
}
Question:
Ce que je veux poser est-ce la bonne approche de mise en œuvre? Est-il bien si créer une catégorie distincte pour les de la base de données des méthodes? Quelles sont les limites ou les questions les gars, vous pensez peut-difficulté à moi plus tard? Aussi, est-il une meilleure façon de mettre en œuvre le concept ci-dessus?
Grâce
Pierre
OriginalL'auteur | 2011-08-03
Vous devez vous connecter pour publier un commentaire.
À quoi vous faites référence à un modèle de la "classe" est plus communément connu comme un objet d'accès aux données (DAO). Votre modèle est habituellement un ensemble de classes qui contiennent vos données et la logique métier. Dans votre cas, probablement un
Student
classe ayant un ID, nom, GPA, etc. les propriétés. Si vous souhaitez séparer d'accès aux données à partir de votre modèle, vous avez accès aux données de la classe (DatabaseHelper
) interroger la base de données et utiliser les données qu'il reçoit de retourStudent
d'objets ou d'uneList<Student>
. Il n'y a vraiment pas beaucoup de point dans la séparation de l'accès aux données de la classe à partir de la base de données aide, il est préférable d'avoir l'ensemble de votre base de données de code dans un seul endroit.L'aide d'un modèle de classes (uniquement), cependant, n'est pas toujours pratique sur Android, car il a un support natif pour la récupération et l'affichage de données à partir d'un Curseur (
CursorAdapter
, etc.). Si vous souhaitez l'utiliser, vous devez exposer vos données, et non comme des objets de modèle, mais commeCursor
'. Comme pour les fournisseurs de contenu, avoir un regard sur ceux qui sont trop, mais si vous n'avez pas besoin d'exposer vos données vers d'autres applications, l'écriture d'unContentProvider
peut-être exagéré.Sur une autre note, vous ne voulez pas être l'ouverture et la fermeture de la base de données à chaque requête. Il est réellement sans danger pour la laisser ouverte, il sera automatiquement fermé lorsque votre application du processus meurt.
OriginalL'auteur Nikolay Elenkov
Je le fais dans mes applications, et il fonctionne à merveille, le code est propre et il ne marche pas d'incidence sur les performances à tous, en particulier avec le matériel téléphones d'aujourd'hui. J'ai essayé toutes les autres approches et même utilisé un fournisseur de contenu, mais un peu plus compliqué les choses, à mon avis.
OriginalL'auteur hitch.united
android natif de l'approche de modélisation des données est contentproviders. Lien
ce genre de résumés le type de source de données.
j'ai l'habitude de le faire d'une manière similaire. mais encore une fois c'est aussi subjectif.
OriginalL'auteur Samuel