Обновление базы данных SQLite и предотвращение сброса всей базы данных - PullRequest
0 голосов
/ 02 августа 2020

У меня есть база данных 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();
    }

}

1 Ответ

0 голосов
/ 02 августа 2020

Сначала измените версию внутри конструктора на 2:

super(context, DBNAME, null, 2);

Хотя рекомендуется использовать для версии переменную stati c.

Затем вы должны использовать onUpgrade() и написать внутри него код, который вставляет новые строки:

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