0
我想找出一種方法來根據用戶請求在我的數據庫中動態創建新表。我目前的數據庫類使用下面的代碼。我想弄清楚如何改變這個以便能夠動態地創建新表格。我的想法之一就是使用這段代碼,首先用onCreate創建一個表,它將保存未來表的名稱。從那裏,當用戶輸入一個新表時,我會將該表添加到將保存表名稱的當前表中,然後從中選擇它並使用它來實際創建具有該特定名稱的表。我不確定這是否會實際發揮作用,但這是我剛纔想到的,並希望看到你們的想法。Android:如何由用戶自己動態創建新的數據庫表?
private static class DbHelper extends SQLiteOpenHelper{
/* Constructor */
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db){
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_FRONT + " TEXT NOT NULL, " +
KEY_BACK + " TEXT NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2){
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
我完全理解你的意思,並同意它。我可以處理數據輸入等...但我的問題是我用onCreate方法做什麼。由於該應用可能會在其生命期間結束幾個不同的表格。那麼每次添加新表時都必須更新onCreate?這正是我想弄明白的。 –
哦,我明白了,我不認爲你甚至不必擔心'onCreate'。 'onCreate'不是創建表格的唯一機會。只要你可以輸入'execSQL'命令,你就可以做到這一點。但你必須擔心的是版本號。如果你創建一個新表或者更改爲一個表,你需要增加版本號來顯示更改,並且會調用onUpgrade,這就是你需要擔心的。 – mango
你認爲簡單地創建兩個表會更好嗎?首先將是包含所有不同「表格」的表格,第二個表格將僅包含所有條目,並且條目將具有一列以指定它們與第一列中的條目的連接?不知何故,爲了簡化表的創建,並使其只需要兩個,並連接兩個?然後,當我需要收集該特定表名的每個值時,我會將其加載到一個arrayList或類似的東西中。 –