Android 在单独的SQLiteOpenHelper类中的现有DB中创建新表

Android 在单独的SQLiteOpenHelper类中的现有DB中创建新表,android,android-sqlite,Android,Android Sqlite,在我已经创建和部署的应用程序中,我使用扩展了SQLiteOpenHelper的单个类文件创建了一个数据库MainDB,即 public class BaseSQLiteOpenHelper extends SQLiteOpenHelper { private final static String DATABASE_NAME = "MainDB"; .... .... } 问题是我把这个类和一个特定的功能联系得太紧密了 现在,我在应用程序中添加了一个全新的模块,它也将

在我已经创建和部署的应用程序中,我使用扩展了
SQLiteOpenHelper
的单个类文件创建了一个数据库MainDB,即

public class BaseSQLiteOpenHelper extends SQLiteOpenHelper {

    private final static String DATABASE_NAME = "MainDB";
    ....
    ....
}
问题是我把这个类和一个特定的功能联系得太紧密了

现在,我在应用程序中添加了一个全新的模块,它也将与DB交互,但会与不同的新表交互

问题是我不能使用同一个类,因为它在多个方面存在冲突。即使我重新设计了代码,也只会从功能/理解的角度增加复杂性

所以,我决定使用相同的DB,但不同的表

现在我已经在
BaseSQLiteOpenHelper
类中创建了DB

那么,如何使用相同的数据库在seprate类中创建新表呢

一种方法是使用单独的数据库,或者

仅在
BaseSQLiteOpenHelper
类中的
onCreate()
中创建我的新表(问题是在同一类中提到新表似乎很尴尬,因为该类与我的新表无关)

请建议


谢谢

首先检查此数据库的当前数据库版本

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");
    }
}
@覆盖
public void onCreate(SQLiteDatabase db){
db.execSQL(“旧查询无需更改”);
execSQL(“在这里创建新表”);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
如果(旧版本<2){
execSQL(“在这里创建新表并更新旧的数据库”);
}
}
完成