更新 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
}
}
我有一个 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
}
}