Upgrading database Sugar ORM always delete previous table's data

时间:2015-11-12 11:31:07

标签: android orm sugarorm

I have a database with Sugar ORM, and every time I create a new class that extends SugarRecord, I need to upgrade my database_version on android manifest to Sugar ORM recognize the new table. Ok till then.

The problem is that Sugar ORM is deleting all my previous data on every table of my database! I have a lot of data on them, and I can't delete it and reinsert it on every database upgrade.

There is some way to avoid this?

Thanks

2 个答案:

答案 0 :(得分:5)

  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脚本文件。您可以一次添加一行所有的alter和insert / update查询。每条线由a终止; (分号)。

  7. 您的assets / sugar_upgrades文件夹中的

    文件:2.sql

      

    alter table注意添加NAME TEXT;

答案 1 :(得分:1)

你可以使用糖orm 1.5版本,如

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

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