Android onUpgrade,数据库结构更改和数据处理

时间:2015-02-27 22:15:18

标签: java android android-sqlite

遇到一些我真不知道如何解决的问题。我在我的SQLite数据库中存储了一个TimeStamp作为一个字符串(不是很聪明;-)),并知道我需要将其转换为数据库中的一个长的毫秒represantation。原因是我想获取TimeStamp并根据设备区域设置正确表示它。

但是,为了实现这一点,我需要在onUpgrade()方法中进行一些数据库迁移。之前我已经完成了这个并且结构更改没有问题,问题是我想将旧的TimeStamps表示为字符串,将它们转换为long并将它们插入到新列中。

想要的迁移流程就是这样的。

  1. 将现有表重命名为tmp_TableName
  2. 使用数据类型为long的新TimeStamp列
  3. 创建新表TableName
  4. 将现有值从tmp_table插入到新表中。在此阶段,现有的TimeStamps应转换为毫秒并存储到新表中
  5. 删除tmp表
  6. 第3点就是问题所在。在将其插入onUpgrade()中的新表之前,是否可以处理任何现有数据?我没有看到任何这方面的例子,我不知道是否可能。 处理情况的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

第3点就是问题所在。有可能处理任何   将现有数据插入onUpgrade()中的新表之前?一世   没有看到任何这方面的例子,我不知道是否可能。   处理情况的正确方法是什么?

您的假设是正确的,是的,您可以使用onUpgrade()来迁移表格的内容。另请注意,onUpgrade()在事务中运行,Android保证回滚是迁移不成功