Android OrmLite-在表升级之前保存数据

Android OrmLite-在表升级之前保存数据,android,ormlite,Android,Ormlite,在我的模型更改数据库之前,是否可以保存表中的数据 例如,我重命名了一列,并且不会丢失数据。因此,也就是说,我想从列c1获取所有数据,将我的列重命名为c2,然后将所有数据写回 我想从列c1中获取所有数据,将我的列重命名为c2,然后将所有数据写回 Sqlite不支持对列进行重命名,因此这在Android下不起作用。不过,您当然可以添加一个附加列。有一些关于Android/ORMLite下模式更改的好文档。见本页: 例如,您可以执行以下架构更新: dao.executeRaw( "ALTER

在我的模型更改数据库之前,是否可以保存表中的数据

例如,我重命名了一列,并且不会丢失数据。因此,也就是说,我想从列c1获取所有数据,将我的列重命名为c2,然后将所有数据写回

我想从列c1中获取所有数据,将我的列重命名为c2,然后将所有数据写回

Sqlite不支持对列进行重命名,因此这在Android下不起作用。不过,您当然可以添加一个附加列。有一些关于Android/ORMLite下模式更改的好文档。见本页:

例如,您可以执行以下架构更新:

dao.executeRaw(
    "ALTER TABLE `account` ADD COLUMN hasDog BOOLEAN DEFAULT 0;");
dao.updateRaw("UPDATE `account` SET hasDog = 1 WHERE dogCount > 0;");
这里引用了一句话:“您不能重命名或删除列或更改约束”

因此,您的选择是:

  • 保持现状
  • 添加一个新列,作为升级的一部分,将所有数据从旧列复制到新列,然后完全忽略旧列,或者
  • 使用删除/创建策略进行升级:将表中的数据备份到临时表中,删除表,按自己的意愿重新创建,将所有数据复制回临时表中,最后删除临时表

  • 数据库升级总是令人紧张的事情(需要大量的错误处理、大量的测试),坦白地说,如果名称是您唯一关心的事情,我就不去管它了(选项1)。如果您真的需要更改它,那么选项2的风险很低,但会留下一个“死”列和数据。例如,如果数据占整个数据库大小的很大一部分,您可以选择选项3。

    我不太明白您想做什么。你可能想编辑你的帖子来提供更多细节。我意识到我在模型更新后丢失了一些数据。因此,我想编写一个补丁,在升级表的模式之前从表中加载一些数据。模式升级后,我将以前加载的数据写回表或另一个表。