我发现了很多关于如何将SQLite数据库与android应用程序一起部署的教程。我还发现,我无法在运行时从assets文件夹中删除文件,因为.apk已签名。
现在我想每周为我的应用程序提供更新的数据库。我的计划是更新apk,并在市场上发布。我显然不想将数据库中的每个程序从资产文件夹复制到应用程序的数据库文件夹中。我尝试比较文件大小,以确定新数据库是否比旧数据库大。但是,如果您不添加或更改大量数据,则大小保持不变。 所以我的问题是:只有在第一次安装或应用程序更新后复制数据库的智能方法是什么?如果我已经监督了可能非常明显的解决方案,通常我会试着找到我的答案,但在这里我找不到解决方案。 )仅部署android数据库一次
1
A
回答
3
答案是,你不必。假设你使用SQLiteOpenHelper来实现你的数据库,你有两个替代:
onCreate(SQLiteDatabase db);
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
这些几乎足以应付所有的问题。当你创建你的openhelper时,你需要为它提供'required'数据库版本。它会自动检测设备,不管它以前是否有你的应用程序的数据库。所以,会有三种可能的情况:
- 没有DB是找到(最有可能这是一个干净的安装您的应用程序)=>调用的onCreate()
- DB是发现和匹配版本=>没有的上述倍率叫
- DB是发现,但版本比期望一个较低的(假设你需要更改数据库结构更新应用程式后)=>调用onUpgrade()
在你的情况下,更新自己的应用,但db的结构不需要改变,(2)会发生,db和数据将会保留。
0
查看Android Developers网站上的NotePadProvider.java示例。基本上,无论何时更新数据库版本,都会在SQLOpenHelper类中调用onUpgrade方法。将您正在查找的逻辑插入该方法。
相关问题
- 1. Servlet在部署后仅从数据库返回一次数据
- 2. 一次部署多个SQL Server 2014数据库
- 3. 如何部署数据库
- 4. 轻松部署数据库
- 5. SQL数据库部署
- 6. SQL数据库部署
- 7. ASP.NET MVC3数据库部署
- 8. 数据库部署问题
- 9. FluentNHibernate数据库部署
- 10. 使用VB.Net部署Access数据库,但数据库不被部署
- 11. 将内部部署数据库镜像到Azure SQL数据库
- 12. Android sql创建数据库一次
- 13. 作为Azure持续部署的一部分的数据库部署
- 14. 首次部署后管理数据库更改?
- 15. 不仅可以节省数据的一部分数据库
- 16. 如何:更新SQL Azure的数据库,代码第一次迁移,TFS部署
- 17. 部署CLR时从TFS部署数据库失败
- 18. 使用mysql数据库部署Rails部署
- 19. SQL Server数据库项目部署前和部署后脚本
- 20. Django AWS部署:部署后未创建新的数据库表
- 21. Android AlarmManager仅触发一次
- 22. 使用DBDeloy进行数据库部署
- 23. 预部署在数据库项目
- 24. 如何部署数据库项目?
- 25. 为ASP .NET部署数据库网站
- 26. 为客户部署SQL Server数据库
- 27. 麻烦从VS2008部署数据库SQL2005
- 28. Capistrano部署擦拭数据库?
- 29. 自动化数据库项目部署
- 30. VS2010数据库项目部署问题
这是一个很好的建议。现在我有一件事要专心。谢谢! – twittfort 2011-02-25 11:01:41