Stavo appena iniziando a lavorare su un'applicazione di database quando ho realizzato che dovevo implementare il modello MVC
poiché l'applicazione è piuttosto complessa e comporta un numero di operazioni del database.
Per quanto riguarda questo, ho deciso di creare un separato model class
per la gestione delle operazioni del database. Questa classe avrà tutti i metodi che mi restituiranno i dati dopo l'esecuzione del comando Sqlite (Seleziona per esempio) OPPURE eseguirà semplicemente il comando SQLite (Elimina per esempio). Ma quello che voglio è separare questa classe dalla classe Database Adapter
, dove apro, creo e chiudo il mio database.
Mi permetta di mettere il mio concetto in codice:Creazione della classe del modello di dati per la gestione del database
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);
}
}
Domanda:
Quello che voglio porre è questo l'approccio corretto di implementazione? Va bene se creare una classe separata per i metodi di database ? Quali limitazioni o problemi pensate potreste turbarmi più tardi? Inoltre, c'è un modo migliore per implementare il concetto di cui sopra?
Grazie
Pietra