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

时间:2013-06-11 14:20:52

标签: android ormlite

在模型更改数据库之前,可以从表中保存数据吗?

例如,我重命名一列,不会丢失数据。因此,即我想从列c1获取所有数据,将我的列重命名为c2并将所有数据写回。

2 个答案:

答案 0 :(得分:3)

以下是ORMLite documentation的引用:“您无法重命名或删除列或更改约束”。

所以你的选择是:

  1. 保持原样,
  2. 添加新列,在升级过程中将所有数据从旧复制到新,并完全忽略旧列,或
  3. 使用drop / create策略进行升级:将表中的数据备份到临时表中,删除表,按照您的意愿重新创建,将所有数据复制回其中,最后放下临时表。
  4. 数据库升级总是紧张的事情(需要大量的错误处理,大量的测试),坦率地说,如果名称是唯一的东西与你有关,我会不管它(选项1) 。如果你确实需要更改它,那么选项2风险很低,但留下了一个“死”列和数据。例如,如果数据占整个数据库大小的很大一部分,则可以选择选项3。

答案 1 :(得分:0)

  

我想从列c1获取所有数据,将我的列重命名为c2并重新写入所有数据。

Sqlite不支持重命名列,因此在Android下无效。但是,您当然可以添加其他列。 Android / ORMLite下的架构更改有一些很好的文档。见本页:

  

http://ormlite.com/docs/upgrade-schema

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

dao.executeRaw(
    "ALTER TABLE `account` ADD COLUMN hasDog BOOLEAN DEFAULT 0;");
dao.updateRaw("UPDATE `account` SET hasDog = 1 WHERE dogCount > 0;");