2

我有一个带有 Sugar ORM 的数据库,每次我创建一个扩展 SugarRecord 的新类时,我都需要将 android manifest 上的 database_version 升级为 Sugar ORM 识别新表。好的,直到那时。

问题是 Sugar ORM 正在删除我数据库每个表上的所有以前的数据!我有很多关于它们的数据,我无法在每次数据库升级时将其删除并重新插入。

有什么办法可以避免这种情况?

谢谢

4

2 回答 2

4
  1. 在您的资产文件夹中创建一个名为 sugar_upgrades 的文件夹。

  2. 在该文件夹中创建一个名为<version>.sql的文件,该文件对应于您在 Android Manifest 中升级到的数据库版本。例如。1.sql, 2.sql 该文件将包含该特定版本的所有更新/更改查询。

  3. 将 AndroidManifest.xml 中的 VERSION 元数据字段更改为适当的版本。

  4. Sugar 负责将数据库从当前版本升级到升级版本。例如:如果数据库当前为版本 1,升级版本为 4,它将查找 2.sql、3.sql 和 4.sql 并按此顺序执行所有当前文件。

  5. 请注意,Sugar 会自动为新实体创建表,因此您的迁移脚本只需要满足对现有表的更改。

  6. 升级脚本示例。这是一个普通的 sql 脚本文件。您可以一次添加所有更改和插入/更新查询。每行以 ; 结尾 (分号)。

资产/sugar_upgrades 文件夹中的文件:2.sql

更改表注意添加名称文本;

于 2015-11-24T07:23:43.093 回答
1

你可以只使用sugar orm 1.5版本,比如

compile 'com.github.satyan:sugar:1.5'

然后只需更新清单中的数据库版本并确保您的数据没有被擦除

于 2017-11-05T09:04:07.423 回答