Android数据库的未来更新方法

Android数据库的未来更新方法,android,database,sqlite,upgrade,Android,Database,Sqlite,Upgrade,在android中使用sqlite数据库的最佳方式是什么 sqlite数据库文件首次将其复制到应用程序环境中 或 在数据库助手的onCreate中以代码创建表 我的数据库有6个表,第一次是空的。我这样问是因为我想在将来更新我的数据库,并想知道实现这一点的最佳方法 谢谢大家! 您应该在第一次使用时在代码中创建它。Android提供了应该用于它的类。定义以下方法: onCreateSQLiteDatabase db:在创建数据库时调用,您可以在这里为其创建表和列,创建视图或触发器 ONUPGRADE

在android中使用sqlite数据库的最佳方式是什么

sqlite数据库文件首次将其复制到应用程序环境中

在数据库助手的onCreate中以代码创建表

我的数据库有6个表,第一次是空的。我这样问是因为我想在将来更新我的数据库,并想知道实现这一点的最佳方法


谢谢大家!

您应该在第一次使用时在代码中创建它。Android提供了应该用于它的类。定义以下方法:

onCreateSQLiteDatabase db:在创建数据库时调用,您可以在这里为其创建表和列,创建视图或触发器

ONUPGRADESQLITEDATABASE db,int oldVersion,int newVersion:如果使用的数据库比当前版本旧,则调用。在这里处理升级数据迁移、表创建/删除


请参见此处,以获得一个好的教程:

不是特定于SQLLite或android的,但是我使用了一个Windows交易应用程序,用户可以在其中保存Xml“文档”——即:保存他们的报告首选项和各种其他标志的自定义视图,然后可以在团队中共享。启动时,加载用户的配置文件并解析其文档以自定义UI

该应用程序每3周发布一次,使用新应用程序所需的现有文档。这是一个问题,因为XML模式偶尔会发生更改,从而导致新字段或已删除字段

我们提出的解决方案是创建一个名为Patcher的抽象类型。每个版本都可以有一个或多个DerivedPatcher类型,这些类型在更新后的第一次加载时运行。修补程序将有一个抽象方法来修补XMl文档。这意味着XML文档将与旧模式一起加载并升级,并使用新模式保存回原位。修补程序还具有回滚方法,允许在发生错误时展开

同样的方法也可以应用于数据库中的表。基本上,如果您可以创建一个补丁程序或补丁管理器,将关键表序列化为内存中的XML,然后应用数据库更改并写回数据,那么您就可以以通用的、可重用的方式实现数据库迁移


这种方法的一个主要优点是,只要您能够访问一些示例SQLLite数据,就可以在部署之前在开发人员PC上进行测试。了解用户如何使用应用程序是这里的关键。

如果您不希望通过用户交互更新数据库,那么文件可能是最佳选择,尤其是在需要插入大量数据的情况下,文件复制与大量插入相比更是如此

另一方面,如果您希望用户修改或添加一些数据,那么文件方法只在第一个版本中起作用

<> P>任何时候你都需要更新你的模式或者添加新的数据来发布升级,你需要考虑现有的数据可能会被用户升级后发现的一些东西所改变或丰富。p> 因此,替换文件不再是一种选择


如果需要使用sqllite助手方法,我想听到一些关于我的SQL代码助手代码生成器的反馈,你可以在这里找到:< /p> 对于大量的数据,你可能想考虑这样的解决方案:在代码中创建一个空数据库,并提供一个响应这个动作的意图的活动:ANDROID.ItTun.Acto.Enter。通过解析发送的文件进行响应,并用内容填充数据库。设计一种易于解析的格式XML并非所有内容都需要;-因此,解析文件和填充数据库的代码很小,我的二进制代码很小,包括一个显示进度的UI,这是活动的较大部分,其大小小于12KB


该文件可以单独分发,包括额外的apk、下载等。这种方法的好处是,您不需要在apk中存储初始数据库内容,因此在删除文件后,数据只在设备上存储一次。否则,数据库中的数据加上apk中的源代码或资产。

谢谢您的回答:。