我正在开发Android应用程序。在升级应用程序时,将重新创建数据库,即onCreate()
类的SQLiteOpenHelper
方法再次执行。
我已经读过,除非你增加数据库版本,否则应用程序升级不应该触及数据库。
两个版本中的数据库版本保持相同,但应用程序版本更改。
有人可以建议我为什么我的应用程序在应用程序升级时重新创建数据库?
更新1:
我的OnCreate()看起来像这样:
public override void OnCreate(SQLiteDatabase db)
{
db.ExecSQL(DataContract.ENGINE_TYPE.CREATE_TABLE);
db.ExecSQL(DataContract.ENGINE_GPS.CREATE_TABLE);
}
我在OnUpgrade()方法中没有任何东西。
然后我在创建表的合同文件中有代码。数据库是完美创建的,我可以使用查询获取数据,但在应用程序升级(不是数据库)后,所有现有数据都将丢失。但是,由于我运行调试模式,所以我可以看到OnCreate()方法再次执行。
更新2:
DataContract类如下所示:
class DataContract{
public class ENGINE_TYPE
{
public static string TABLE = "TypeInfo";
public static string COLUMN_ENGINE_ID = "engine_id";
public static string COLUMN_ENGINE_DESC = "engine_desc";
public static string CREATE_TABLE = "CREATE TABLE " + TABLE +
"(" + COLUMN_ENGINE_ID + " TEXT PRIMARY KEY " + " NOT NULL , " +
COLUMN_ENGINE_DESC + " TEXT NOT NULL);";
}
}
其他表也与此类似。
更新3:
我的应用升级意味着只增加应用版本而非数据库版本。
我通过为两个版本创建APK来部署应用程序。因此,升级是在已存在先前版本apk时安装最新版本apk。
接下来,我还尝试在部署模式下直接安装APK。这里还在已安装的应用程序之上安装最新版本。所以,我可以看到程序流在调试模式下通过SQLiteOpenHelper类的onCreate()方法。
我正在研究Visual Studio上的Xamarin