更新 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);

虽然最好为版本使用静态变量。

然后您必须使用 onUpgrade() 并在其中编写插入新行的代码:

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