[英]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.