我已經創建了一個帶有表格的數據庫。我想要在用戶的命令中動態添加更多的表格到該數據庫。如何在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