2016-08-17 129 views
0

我已經創建了一個帶有表格的數據庫。我想要在用戶的命令中動態添加更多的表格到該數據庫。如何在android中創建數據庫時將表添加到數據庫中?

onOpen()方法沒有用,因爲它也改變了我之前存在於數據庫中的表。

+0

使用rawQuery。您只需在另一個不是onOpen()的地方執行「create」查詢。 https://www.sqlite.org/lang_createtable.html –

+0

使用原始查詢(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

回答

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),並在添加新表查詢升級和創建方法如下。

@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"); 
    } 
} 
+0

很好的回答,儘管我不建議if語句使用switch語句允許增量更新。 – Waves

+0

刪除較早的表的值 – user3807098

+0

您增加了版本號嗎? 此外,你沒有提供任何代碼或任何數據庫版本,我看到了標籤,所以我知道它是SQLite,但這就是我所知道的,所以在這一點上我不得不做很多猜測。您也可以查看以下鏈接以獲取備用答案: http://stackoverflow.com/questions/9804083/how-to-add-second-table-in-database-in-sqlite –

相關問題