我已经在应用商店(版本1.0)上传了一个应用程序。我的应用程序正在使用一个sqlite数据库来存储一些数据。现在,我对数据库进行了一些更改(我在db中的一个表中添加了2或3个新列)。我想用新版本1.1(它具有不同的数据库结构)更新我的应用程序的先前版本。现在,当已经使用版本1.0的用户将应用程序升级到版本1.1时,数据库已经存在于应用程序沙箱中,因此应用程序指向版本1.1,但我的数据库仍然是旧数据库。我想拥有旧数据的新数据库,如果有的话。请帮助我。谢谢。使用不同的sqlite数据库结构更新新版本到应用程序
回答
SQLite支持的东西称为user_version属性,您可以执行PRAGMA user_version
来查询您的应用程序数据库的当前架构版本。当您的应用程序启动时,此查询可能会在开始时写入。
更新此user_version执行以下更新查询PRAGMA user_version = version_num
;
只要你创建的SQLite数据库,它是把这个属性user_version,所以,当你在未来的升级可以查询当前值的最佳实践。检查需要做什么并执行剩余的更改或创建表来升级模式版本。
例如:
在第一个版本我创建COL1表1,COL2
我执行SQL创建表1,一旦成功完成,我执行编译user_version = 1,所以这将表明我的当前架构版本是1
在未来的版本我添加新的COL3,我需要我的架构版本更改为2
我第一次查询user_version,检查它的价值,如果是1,那么你需要运行修改脚本添加新列,并设置用户版本为2
在你的情况,因为你以前没有设置user_version,这将是很难区分新安装VS升级方案。因此,现在可以假定如果数据库存在,它是升级方案并执行alter scripts,如果不存在,假设它是一个新的安装场景并运行创建脚本。但看看你是否可以使用上面的编译指示来解决你的问题。
似乎是更新和维护数据库模式的好方法,我会试着尝试这一点。 – 2013-04-11 06:53:59
你可以在启动检查它是否是旧数据库,如果是有一个程序来创建新的结构(使用临时名称)的新数据库,从旧的复制所有数据到新的,关闭旧分贝&删除它,关闭新的数据库,重命名它,然后最后打开它再次为您的更新的应用程序使用。简单,快速,&你不需要深入的SQLite知识来做到这一点。
- 1. iOS - 更新新应用程序版本中的数据结构
- 2. 更新应用程序时更改SQLite数据库结构
- 3. Sqlite数据库不更新与应用程序更新
- 4. 当iPhone上的应用程序版本更改时,sqlite数据库更新
- 5. Android SQLite数据库更新表时更新应用程序
- 6. 更新本地sqlite数据库windows手机8应用程序
- 7. 更新SQLite数据库时,应用程序与数据库一起发布的新版本
- 8. 更新sqlite数据库版本?
- 9. Phonegap应用程序数据库版本更新后保留
- 10. 更新html表格版本(网络应用程序)数据库
- 11. 如何使用新的android应用程序更新来更新现有的SQLite数据库表数据?
- 12. 应用程序的本地数据库将与应用程序的更新版本相同
- 13. 更新数据库的应用程序
- 14. 我如何更新Android应用程序中的SQLite数据库?
- 15. iPhone应用程序更新(在sqlite的使用核心数据)
- 16. 更新应用程序的Rails版本
- 17. 使用外部数据库脚本更新Drupal应用程序
- 18. SQLite数据库没有在应用程序内更新
- 19. 在iPhone上更新Sqlite数据库应用程序
- 20. 更新Android应用程序数据库
- 21. SQLiteOpenHelper即使在数据库版本更改并卸载后,也不会更新数据库Android应用程序
- 22. 更新iPhone应用程序删除旧版本的数据
- 23. 如何在应用程序版本更新时在iPhone上的SQLite数据库中维护数据?
- 24. 更新使用coredata版本的ios应用程序,版本不为
- 25. 即使在增加数据库版本之后,SQLite数据库也不会更新从Play Store更新应用程序
- 26. 使用不同的java更新版本|这如何影响应用程序?
- 27. Cydia应用程序版本在更新和应用程序本身是相同的,但Cydia要求更新
- 28. 上传应用程序的更新版本,以新的应用程序ID店
- 29. Android更新应用程序,无需打扰本地Sqlite数据库
- 30. 数据库在更新应用程序时更新
检查我的答案在这里:http://stackoverflow.com/a/9851554/108574数据库升级战略。 – 2012-04-13 06:34:54
@HeShiming谢谢哥们。但是我已经在应用商店中上传了1.0版本,并且没有元数据表(用于存储数据库版本,如您所建议的那样)。现在,我想上传一个新版本,并且数据库结构发生了变化。那么,我现在怎么实现呢? – anshul 2012-04-13 06:45:16
以及该方法仍然有效。您只需通过检查select语句的返回值来检查元数据表的存在性。如果它不存在,请创建一个。 – 2012-04-13 07:44:28