簡體   English   中英

Android SQLite DB版本2錯誤

[英]Android SQLite DB version 2 error

我意識到這里有很多關於SQLite版本控制的答案,但是我找不到針對特定問題的答案。 我在版本1上做得很好,已經有一段時間了。 然后,我需要在表中添加另一列“ TAG”,並在onUpgrade中實現以下代碼。

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) db.execSQL(DATABASE_ALTER_TAG);
}

效果很好。 沒有問題。 TAG列按預期的方式進行讀寫-直到完全卸載后重新安裝為止。 現在,數據庫將無法使用在卸載/重新安裝之前有效的代碼。

我懷疑這是因為在卸載/重新安裝后,“舊版本”為null(不是<2)並且沒有添加TAG列。 不過,我不確定。 我的onUpgrade代碼是問題嗎?

我想我可以用TAG列將我的數據庫重寫為Version 1,但是我想知道我的代碼有什么問題以供將來參考。

編輯問題

好的,謝謝您到目前為止的答復。 我了解如何使數據庫適合剛安裝該應用程序的人員使用。 我也了解如何使DB從版本1到版本2的用戶正常工作。我還不知道如何使數據庫對兩個用戶均有效(全新安裝與剛剛升級的用戶)。

您的假設絕對是不正確的。 原始數據類型不是對象,因此也不為null

只要確保您的create語句db.execSQL(DATABASE_CREATE); 反映了新的數據庫表結構而不是舊的表結構,即具有新的TAG列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM