【问题标题】:How to protect sqflite database when updating flutter app更新flutter应用程序时如何保护sqflite数据库
【发布时间】:2020-12-21 11:04:29
【问题描述】:

我在我的应用程序中使用 sqflite 数据库。数据库中填满了用户的条目。当我交付新的应用版本时,数据库必须保持不变。

当我将应用程序的新版本作为 apk 部署到我的真实手机时,数据库将被删除。有没有办法在更新期间保护数据库?

我想知道这是否是我部署新应用程序版本的方法?我使用“颤振安装”。也许卸载方法会从应用程序中删除所有内容,包括数据库并创建一个新的应用程序目录!?

【问题讨论】:

  • 安装新版本时是否卸载旧版本?
  • 不(我不知道)。我假设当我交付一个新的应用版本时数据库不会被触及。
  • 您是否将版本传递给 openDatabase 方法?您应该在每次创建新表或更新现有表时传递版本号并更新它。 github.com/tekartik/sqflite/blob/master/sqflite/doc/…
  • 我没有对数据库进行任何更改。它是更新的应用程序。打开时检查是否存在现有数据库并打开它。但显然数据库在更新过程中通过“flutter install”删除了
  • 我发现我可以通过系统备份来保存数据库。我强制进行系统备份。之后在更新过程中恢复了数据库。

标签: android flutter sqflite


【解决方案1】:

flutter install 删除应用和数据库。解决方案是使用流式安装。运行以下命令,而不是 flutter installadb install build/app/outputs/flutter-apk/app.apk。这将更新应用程序并保持数据库不变。

您必须安装 sdk 平台工具和指向平台工具的环境变量。

【讨论】:

    【解决方案2】:

    您可以获取旧数据库的内容并将其存储在临时数据库中,并将所有旧内容保存在新数据库中,并在插入成功后删除临时数据库。 简而言之,以下伪代码可能会有所帮助:

    tempdb.data = getOldDatabaseContent newDatabase.data = tempdb.data 删除(临时数据库)

    【讨论】:

    • 感谢您的建议。我想知道为什么我必须这样做。在应用更新期间保留数据库应该是很正常的。就像使用调试模式交付时一样。
    猜你喜欢
    • 2019-06-03
    • 2022-10-13
    • 1970-01-01
    • 2022-07-14
    • 2021-11-22
    • 2017-11-05
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多