在我已经创建和部署的应用程序中,我使用扩展SQLiteOpenHelper
的单个类文件创建了一个数据库 MainDB ,即
public class BaseSQLiteOpenHelper extends SQLiteOpenHelper {
private final static String DATABASE_NAME = "MainDB";
....
....
}
问题是我把这个课程捆绑在了一个特定的功能上。
现在我在应用程序中添加了一个全新的模块,它也将与DB交互,但具有不同的新表。
问题是我不能使用同一个类,因为它在多个方面存在冲突。即使我重新设计代码,它只会从功能/理解的角度增加复杂性。
所以,我决定使用相同的数据库,但不同的表。
现在我已经在BaseSQLiteOpenHelper
课程中创建了数据库。
那么,如何使用相同的DB在seprate类中创建新表?
一种方法是使用单独的数据库,或者,
仅在onCreate()
类的BaseSQLiteOpenHelper
中创建我的新表(问题是提到同一个类中的新表似乎很尴尬,因为这个类与我的新表无关)。
请建议。
谢谢
答案 0 :(得分:2)
首先检查此数据库的当前数据库版本
private final static String DATABASE_NAME = "MainDB";
private static final int DATABASE_VERSION = 1;
public BaseSQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
并递增数据库版本(DATABASE_VERSION),并在升级和oncreate方法中添加新表查询,如下所示。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("old query no need to change");
db.execSQL("Create your new table here");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL("Create your new table here as well this for update the old DB");
}
}
完成!!!