gpt4 book ai didi

android - 在 Android 中使用多个数据库表时的代码设计

转载 作者:搜寻专家 更新时间:2023-11-01 08:01:46 24 4
gpt4 key购买 nike

有些人编写了一个包含列名和表名的封闭类以及一个扩展 SqlliteOpenHelper 类的静态类。但是,如果您的数据库中有多个表,它很容易变得臃肿。 Android 社​​区是否遵循任何代码设计以保持此数据库相关代码的清洁?我仍在学习 Android,我无法在互联网上真正找到它。大多数人在教程中只使用一张表,他们并不真正关心这方面。

最佳答案

您可以为 DB Helper 和每个表编写单独的类。并将所有方法(插入/更新/删除/获取)写入这些类。

我给你一个示例代码,它会让你了解如何实现逻辑。

辅助类

public class DatabaseHelper extends SQLiteOpenHelper {

private static DatabaseHelper sInstance = null;

private static final String DATABASE_NAME = "database_name";
private static final int DATABASE_VERSION = 1;

public static DatabaseHelper getInstance(Context context) {

if (sInstance == null) {
sInstance = new DatabaseHelper(context.getApplicationContext());
}
return sInstance;
}

/**
* Constructor should be private to prevent direct instantiation. make call
* to static factory method "getInstance()" instead.
*/
private DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(Table1.CREATE_TABLE_TABLE1);
db.execSQL(Table2.CREATE_TABLE_TABLE2);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// write here for update code

}
}

和表相关的独立类

public class Table1 {
private static final String TABLE = "Table_1";
public static final String CREATE_TABLE_TABLE1 = "CREATE TABLE "
+ TABLE + " (_id INTEGER PRIMARY KEY, name TEXT)";

private Context mContext = null;

public Table1(Context mContext) {
this.mContext = mContext;
}

// And write this Table related stuffs
public long insert(String aStringValue) {
// Here you can get helper as
SQLiteDatabase db = DatabaseHelper.getInstance(this.mContext).getWritableDatabase();

ContentValues values = new ContentValues();
values.put("name", aStringValue);
// insert row
return db.insert(TABLE, null, values);
}

public Cursor getAll(String aStringValue) {
//TODO Even instead of getting Cursor you can get List.
// So you have to design some models and fill them into here.
// For example you can read at http://www.androidhive.info/2013/09/android-sqlite-database-with-multiple-tables/
// Read above how to create a Model and use them.

String selectQuery = "SELECT * FROM " + TABLE;
SQLiteDatabase db = DatabaseHelper.getInstance(this.mContext).getReadableDatabase();
return db.rawQuery(selectQuery, null);
}
}

// Same as Table_1
public class Table2 {
private static final String TABLE = "Table_2";
public static final String CREATE_TABLE_TABLE1 = "CREATE TABLE "
+ TABLE + " (_id INTEGER PRIMARY KEY, name TEXT)";

// And write this Table related stuffs
// Same as Table 1.
}

关于android - 在 Android 中使用多个数据库表时的代码设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20394386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com