我更新了应用程序的数据库。但是,从市场更新应用程序的用户每次启动应用程序时都会看到崩溃,因为新的数据库结构与旧数据库不兼容。要求他们卸载并安装应用程序并不好,我需要在安装时只执行一次操作,即清除旧数据库并创建新数据库。每次应用程序启动时都不应调用此选项,仅在安装时或应用程序第一次启动时调用。
我想我已经清楚地定义了我的情况,现在我从哪里开始?我是否应该让用户无法卸载并安装应用程序,或者可以执行我的要求?
答案 0 :(得分:2)
只需更改数据库的版本,并覆盖onUpgrade
课程中的DatabaseHelper
。
private static final int DATABASE_VERSION = 2;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
+ ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATION);
onCreate(db);
}
答案 1 :(得分:1)
为什么不实施SQLiteOpenHelper
onCreate()
方法?
此类提供了有用的onUpgrade()
和{{1}}方法。
见这里:onUpgrade()
答案 2 :(得分:1)
首先清除旧数据库并创建一个新数据库真是个坏主意(看到数据丢失,用户真的很生气。)
您应该始终尝试使用新列和内容升级以前的数据。您应该始终尝试在不清除数据的情况下更改表的结构,而不是清除整个数据。
还有一件事是您可以在DBHelper类的onUpgrade()方法中升级到新数据库。