Google文档for SQLiteOpenHelper.onUpgrade非常通用。我想知道onUpgrade执行是如何工作的?
Android是否将数据库版本号存储在数据库本身内(我试图使用数据库工具aSQLiteManager找到它,顺便说一句非常好的软件,但它似乎是隐藏的,如果存在的话)?或者Android只是在安装时比较新旧版本的应用程序,并在此基础上将新版本和新版本定义为onUpgrade的参数。
我们举一个例子。我有app 1,可以使用多个数据库。一开始我只有数据库A版本1.接下来我将应用程序升级到版本2,数据库A也升级到版本2(执行onUpgrade)。接下来,我从同一个应用程序创建的朋友那里获得数据库B,但是在版本1中(因此B也有版本1)。我将它复制到相应的目录并运行我的应用程序。是否会执行onUpgrade方法(对于数据库B版本1,没有重新安装应用程序)?
答案 0 :(得分:2)
如果需要,您可能希望使用SQLiteDabase(onUpgrade的第一个参数),方法getPath知道将更新哪个数据库。
当您询问SQLiteOpenHelper.getWritableDatabase(或getReadableDatabase())时,如果您在构造函数中设置的版本大于当前版本的数据库,则会更新它。
如果您需要为不同的数据库使用不同的升级语句(通常是这种情况),您可能需要声明两个扩展SQLiteOpenHelper的类。