アプリケーションが非常に複雑で多くのデータベース操作が必要なため、MVC
パターンを実装する必要があることがわかったとき、データベースアプリケーションで作業を始めました。
これに関して、私はデータベース操作を扱うために別のmodel class
を作成することに決めました。このクラスは、Sqliteコマンド(例えば、Select)またはを実行した後に私にデータを返すすべてのメソッドを持ち、単にSQLiteコマンドを実行します(例えばDelete)。しかし、私が望むのは、このクラスをDatabase Adapter
クラスから分離することです。そこでは、データベースを開いて作成して閉じます。
私はコードの中に私の概念を入れてみましょう:データベース処理のためのデータモデルクラスの作成
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);
}
}
質問:
私は何を聞いてみたいことは、これは実装の正しいアプローチですか? データベースメソッドの個別のクラスを作成すると問題ありませんか?後で私が困っていると思われる制限や問題は何ですか?また、上記のコンセプトを実装するより良い方法はありますか?
おかげ
ストーン