我有一个我在SQLite浏览器中构建的数据库,它工作正常.我推出了一个带有预建数据库的应用程序,现在我想向该数据库添加更多表和数据.
我可以让应用程序启动SQLiteOpenHelper的onUpgrade方法.但问题是,每次使用帮助器时都会这样做.
我已将其本地化,仅在应用程序启动时,从我用于检索数据的帮助程序中分离升级命令,但这仍然是一个问题.
我已经弄清楚了,因为我从版本1开始在我的计算机上使用相同的数据库(我正在编辑的那个).所以,每当它将新的数据库写入SD卡时它就会显示版本1,即使我应该到现在为止版本4.
所以,我的问题是,如何手动编辑原始数据库的数据库版本,以便在更新时不是在新版本上编写旧版本号?
我有一个关于免费应用程序的困境,我允许用户将他们的数据(SD卡上的sqlite文件)导入付费应用程序.
完成这些更新后; 我意识到如果我需要对数据库进行未来的更改,用户将需要将相同的数据库版本(从免费应用程序)导入到现有版本(付费应用程序).
真人生活的例子:
假设两个应用的版本1都有1个包含5列的表.我升级到v2,现在1个表有6列.
当潜在用户在付费应用程序中导入以从免费应用程序引入数据时,免费应用程序可能在数据库版本1上(如果用户最近未更新应用程序),而付费应用程序将是寻找数据库版本2.我认为这会导致启动时崩溃.
如何在导入之前在付费应用中进行这样的检查:(伪代码)
File olddb = oldDb.db; // get the back up file here from SD
int piadAppDBVersion = 2; // check for the current version of the database in paid app
if (olddb.getDatabaseVersion() == getPaidAppDBVersion()) { // made up functions
// allow import;
} else {
// Toast "Your databases are incompatible"
}
Run Code Online (Sandbox Code Playgroud)
所以这两个问题:1.如果上面的代码是确保兼容性的适当解决方案,那么如何做到这一点?2.如果以上不是我问题的标准解决方案,那么是什么?
附注:我的导入包含一个简单的文件副本:在外部存储上复制后备数据库并覆盖内部存储上的数据库.
关注这个问题有没有办法通过adb shell检查应用程序的当前数据库版本?另外,我如何查看user cookie问题中提到的字段?