我已经创建了一个带有表格的数据库。我想要在用户的命令中动态添加更多的表格到该数据库。如何在android中创建数据库时将表添加到数据库中?
onOpen()方法没有用,因为它也改变了我之前存在于数据库中的表。
我已经创建了一个带有表格的数据库。我想要在用户的命令中动态添加更多的表格到该数据库。如何在android中创建数据库时将表添加到数据库中?
onOpen()方法没有用,因为它也改变了我之前存在于数据库中的表。
我假设你正在使用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),并在添加新表查询升级和创建方法如下。
@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");
}
}
很好的回答,尽管我不建议if语句使用switch语句允许增量更新。 – Waves
删除较早的表的值 – user3807098
您增加了版本号吗? 此外,你没有提供任何代码或任何数据库版本,我看到了标签,所以我知道它是SQLite,但这就是我所知道的,所以在这一点上我不得不做很多猜测。您也可以查看以下链接以获取备用答案: http://stackoverflow.com/questions/9804083/how-to-add-second-table-in-database-in-sqlite –
使用rawQuery。您只需在另一个不是onOpen()的地方执行“create”查询。 https://www.sqlite.org/lang_createtable.html –
使用原始查询(SQLiteDatabase myDB = null;) - (myDB = this.openOrCreateDatabase(“TheDatabaseName”,MODE_PRIVATE,null);) - (myDB.execSQL (“CREATE TABLE IF NOT EXISTS tablename(id INTEGER PRIMARY KEY AUTOINCREMENT,columna TEXT,columnb TEXT);”);) - (myDB.close();) – Tasos