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

时间:2014-07-08 12:35:09

标签: android android-sqlite

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

public class BaseSQLiteOpenHelper extends SQLiteOpenHelper {

    private final static String DATABASE_NAME = "MainDB";
    ....
    ....
}

问题是我把这个课程捆绑在了一个特定的功能上。

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

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

所以,我决定使用相同的数据库,但不同的表。

现在我已经在BaseSQLiteOpenHelper课程中创建了数据库。

那么,如何使用相同的DB在seprate类中创建新表?

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

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

请建议。

谢谢

1 个答案:

答案 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");
    }
}

完成!!!