我创建了一个带有table的数据库。我想根据用户的命令动态地向该数据库添加更多表。
onOpen()方法没有用,因为它还会更改我以前在数据库中已存在的表。
答案 0 :(得分:1)
我假设你使用的是SQLite数据库。如果是这种情况,这里存在一个可行的解决方案:
Create new table in existing DB in separate SQLiteOpenHelper class
请参阅rmkrishna在该帖子中的答案,如下:
首先检查此数据库的当前数据库版本
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");
}
}