【发布时间】:2011-10-18 19:41:03
【问题描述】:
当我意识到我应该实现MVC 模式时,我刚刚开始研究数据库应用程序,因为该应用程序非常复杂并且涉及许多数据库操作。
对此,我决定创建一个单独的model class 来处理数据库操作。此类将具有在执行 Sqlite 命令(例如选择)后返回数据的所有方法或将简单地执行 SQLite 命令(例如删除)。但我想要将这个类与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
*/
}
//数据库适配器类
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);
}
}
问题:
我想问的是这是正确的实施方法吗?为数据库方法创建单独的类可以吗?你们认为以后有哪些限制或问题可能会困扰我?另外,有没有更好的方法来实现上述概念?
谢谢
石头
【问题讨论】:
标签: android database model-view-controller sqlite datamodel