我一直在关注YouTube上一位叫Prakeesh的绅士的教程,其中他解释了如何在Android中的数据库上执行CRUD操作。

到目前为止,我有以下代码可以正常工作:

public class DataHandler {

public static final String NAME = "name";
public static final String TABLE_NAME = "mytable";
public static final String DATABASE_NAME = "mydatabase";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_CREATE = "create table " + TABLE_NAME + " (" + NAME + " text not null);";
SQLiteDatabase database;

DatabaseHelper databaseHelper;
Context context;

public DataHandler(Context context) {
    this.context = context;
    databaseHelper = new DatabaseHelper(context);
}

public DatabaseHelper open(){
    database = databaseHelper.getWritableDatabase();
    return databaseHelper;
}

public void close(){
    databaseHelper.close();
}

public long insert(String text){
    ContentValues contentValues = new ContentValues();
    contentValues.put(NAME, text);
    return database.insert(TABLE_NAME, null, contentValues);
}

public Cursor returnData(){
    return database.query(TABLE_NAME, new String[] {NAME}, null, null, null, null, NAME);
}

// Database Helper Class
private static class DatabaseHelper extends SQLiteOpenHelper{

    public DatabaseHelper(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
        sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(sqLiteDatabase);
    }
}

}


总而言之,以上内容包含一个DataHandler类,该类包含数据库Schema,即数据库名称,我的表名(仅一个表),数据库版本等。此类包含CRUD方法和一个初始化构造函数。 DatabaseHelper对象。

DatabaseHelper对象是一个内部类,该类扩展了SQLiteOpenHelper并覆盖了onCreateonUpdate方法,它们的用法完全相同。

最后,我的问题是如何重新组织和重新组织上述设计,以便可以在例如餐厅表或用户表上执行CRUD操作? DatabaseHelper会坐在哪里?如何在每个对象中引用DatabaseHelper对象?如何轻松引入更多具有相同CRUD操作的对象?

最佳答案

我建议您使用带有合同的内容提供程序,这样可以为您提供访问数据和执行原始操作的标准方法。然后,您的数据库助手将只进行表的设置并填充所有默认数据。

合同定义了模型对象,然后内容提供者可以从上面的抽象层从数据库中插入,更新和删除这些对象。

内容提供程序还为您提供了很多功能,例如与加载程序链接,因此您可以基于绑定到内容提供程序的列表视图自动刷新列表视图,并“侦听”基础数据源的更改。

关于android - Android-数据库类结构OOP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21283502/

10-11 22:16
查看更多