【问题标题】:How to update database with delphi XE8 firemonkey project?如何使用 delphi XE8 firemonkey 项目更新数据库?
【发布时间】:2015-11-19 06:47:10
【问题描述】:

我有一个适用于 iOS 和 Android 的 firemonkey 多设备项目。我使用 SQLite 数据库来存储我的数据。我通过在项目部署中添加文件并设置远程路径来部署数据库。

现在,如果我对我的数据库进行任何更改,然后更新我的应用程序,旧数据库仍然存在。只有删除应用程序并重新安装它,我才会获得新数据库,或者如果我删除应用程序数据,我会获得新数据库。

但我想用新的表/列/插入更新数据库,而不会丢失旧数据库中的任何数据。

我该怎么做?

【问题讨论】:

  • Android 上通常的方式是使用SQLiteOpenHelper,在manifest 中指明schema 版本并提供升级SQL 脚本。

标签: database sqlite delphi firemonkey delphi-xe8


【解决方案1】:

我知道两种方法。

首先,您可以杀死旧数据库并解压缩并复制新数据库。演示样本在这里 https://drive.google.com/file/d/0BwEZB8sRo0DSakRlU2NZRXRHREE/edit?pli=1

适用于安卓设备。

其次,我认为您必须通过 SQL 代码添加新字段。

【讨论】:

  • 本题求一个不丢失数据的方法,所以答错1个os,答对了
  • 我尝试使用演示示例,但它是俄文的,也不起作用。
  • 您可以使用1种方式将新数据库复制到新文件名,复制数据并重命名。这不是好办法,而是办法。
【解决方案2】:

我创建了一个类来检查数据库的当前版本和最新版本。如果它不是最新的,它将运行更新查询运行时。

【讨论】:

  • 如何查看数据库版本?一些具体的表?还是元数据?
  • 由于 mjn 的评论,我搜索了架构版本。然后在文档中我发现您可以为此使用 pragma user_version:sqlite.org/pragma.html#pragma_user_version 因此,如果您不想这样做,则不需要自定义表。备注:user_version 是整数,所以没有花哨的版本号格式
  • @ArieKanarie 我创建了自己的表格,这样我就可以使用更详细的版本编号,还添加了更新说明
猜你喜欢
  • 2015-08-11
  • 2015-10-08
  • 2015-08-19
  • 2011-12-10
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多