2015-01-07 44 views
0

我有一個包含數據庫的PlayStore上的應用程序。
現在在新版本中,數據庫被更改,輸入一個新表格。
當前我正在使用sqlite studio並將數據庫文件放入稍後作爲應用程序數據庫複製的資產中。請參閱this示例。如何合併以前的數據庫與新版本數據庫sqlite - Android的

我必須刪除以前的數據庫來複制新的,或者如果我複製新(覆蓋),在這兩種情況下用戶數據都會丟失。

也許我可以附加一個新表到當前數據庫,但如果我必須在表中添加一列在以前的數據庫?
我應該如何處理?

編輯:如果我必須從數據庫中複製數據並重新插入,我如何知道當前存在於我的數據庫中的表和列。

請指引我...

+0

創建一個備份** first **,刪除舊的數據庫,創建一個新的數據庫,並將舊數據庫中的備份數據複製到新數據庫(假定您知道每個內容需要放在哪個表中)。 –

+0

@BuhakeSindi如果我必須從數據庫中複製數據並重新插入,我如何知道當前存在於我的數據庫中的表和列。 – Salmaan

+0

將每個表備份到一個文件中,這樣您就知道哪個備份文件映射到哪個表。 –

回答

0

從數據庫中獲得的所有數據到ArrayList中或其他任何東西(我會建議的ArrayList),並刪除舊的數據庫,然後創建新的數據庫,並插入所有數據到新的數據庫。

它不是一個合適的方式,而是一個節省你的時間的技巧。

乾杯

-Aman

+0

更好地創建包含來自數據庫的所有列的對象的ArrayList。 –

+0

這也可以做到。 – AmniX

+0

@MarkZucchini如何知道當前存在於我的應用程序數據庫中的表和列? – Salmaan

0

對於新表,你只需要添加創建表的更新方法

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
    if(oldVersion < LastVersionWithoutTheTable && newVersion >= LastVersionWithoutTheTable){ 
     db.execSQL(CREATE_THE_TABLE); 
    } 
} 

對於新列,在所有數據複製數組,重新創建表並重新插入數據。

也許可以使用SQL Alter Table,但我從不在SQlite數據庫上嘗試它。

+0

如果我必須從數據庫中複製數據並重新插入,我如何知道當前存在於我的數據庫中的表和列。 – Salmaan

+0

With oldVersion – AxelH

+0

假設您已經在v3中添加了一個關於數據庫的列,在onUpgrade中,您檢查oldVersion的值,如果它在v3之前,您知道它是沒有這個新列的表。 (對於這些表來說,同樣的事情,記錄你對數據庫的修改,知道你在這個版本中創建了這個表......) 我使用一個字符串數組來存儲我的列名(和順序) ,你可以用它來存儲舊的結構(每個版本的表一個數組,以瞭解你的表是如何的。 – AxelH

相關問題