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

Java Android onUpgrade、数据库结构更改和数据处理,java,android,android-sqlite,Java,Android,Android Sqlite,有些问题我真的不知道怎么解决。我在SQLite数据库中存储了一个时间戳作为字符串,但不是很聪明;-,我知道我需要把它转换成毫秒代表,作为数据库中的一个长符号。这样做的原因是,我希望获取时间戳,并根据设备区域设置正确地表示它 然而,为了实现这一点,我需要在onUpgrade方法中进行一些数据库迁移。我以前做过,结构更改没有问题,问题是我想用字符串表示旧的时间戳,将它们转换为long,并将它们插入到新的列中 想要的迁移流是这样的 将现有表重命名为tmp_TableName 使用数据类型为long的新

有些问题我真的不知道怎么解决。我在SQLite数据库中存储了一个时间戳作为字符串,但不是很聪明;-,我知道我需要把它转换成毫秒代表,作为数据库中的一个长符号。这样做的原因是,我希望获取时间戳,并根据设备区域设置正确地表示它

然而,为了实现这一点,我需要在onUpgrade方法中进行一些数据库迁移。我以前做过,结构更改没有问题,问题是我想用字符串表示旧的时间戳,将它们转换为long,并将它们插入到新的列中

想要的迁移流是这样的

将现有表重命名为tmp_TableName 使用数据类型为long的新时间戳列创建新表TableName 将tmp_表中的现有值插入新表,在此阶段,现有时间戳应转换为毫秒并存储到新表中 删除tmp表 问题出在第三点。在将任何现有数据插入onUpgrade中的新表之前,是否可以处理这些数据?我没有看到任何关于这方面的例子,我不知道这是否可能。 处理这种情况的正确方法是什么

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


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

OK,听起来不错,onUpgrade在事务中运行并保证回滚,但实际上并不知道这一点。您知道描述迁移表内容的正确方法的文档吗?谢谢不,我知道。但我在过去也做过同样的事情,而且成功了