簡體   English   中英

更新 SQLite 數據庫並防止重置所有數據庫

[英]Updating SQLite Database and prevent to reset all database

我有一個 SQLite 數據庫。 我想將此數據庫更新到 2.0 版。 但是我的應用程序的主要關鍵是數據庫版本 1.0 中的某些部分數據被用戶修改了,我不希望版本 2.0 刪除這些數據的情況。 我想要的是向數據庫添加一些行並防止重置所有數據庫。 我該怎么做?

public static final String DBNAME = "Animals.db";

@SuppressLint("SdCardPath")

public static final String DBLOCATION = "/data/data/com.erk.animals/databases/";
private Context mContext;
private SQLiteDatabase mDatabase;





public DatabaseHelper(Context context) {

    super(context, DBNAME, null, 1);
    this.mContext = context;
}


@Override
public void onCreate(SQLiteDatabase db) {


}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}


public void openDatabase() {

    String dbPath = mContext.getDatabasePath(DBNAME).getPath();
    if (mDatabase != null && mDatabase.isOpen()) {
        return;
    }
    mDatabase = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
}

public void closeDatabase() {

    if (mDatabase != null) {
        mDatabase.close();
    }

}

首先將構造函數中的版本更改為2

super(context, DBNAME, null, 2);

雖然最好為版本使用 static 變量。

然后您必須使用onUpgrade()並在其中編寫插入新行的代碼:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {  // or if (oldVersion == 1)
        // write code here
    }
}

暫無
暫無

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

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