首页 > 解决方案 > 使用 Room Persistence Storage 在 Sqlite 中更改列的数据类型

问题描述

我有表Invoice

TABLE Invoice (UserId INTEGER NOT NULL, InvoiceNumber TEXT NOT NULL, Amount REAL NOT NULL, ...)

我想将UserId列的数据类型更改为TEXT不丢失表中已经存在的任何数据。

如何在Room不删除和重新创建表的情况下使用它?

标签: androidsqliteandroid-sqliteandroid-room

解决方案


您不能直接更改列 ( UserId) 的数据类型。您可以按照以下步骤解决您的问题!

  1. 添加新列 ( UserIdTemp)
  2. UserIdto复制现有数据UserIdTemp(将数据转换为所需格式)
  3. 删除旧列 ( UserId)
  4. UserId使用新数据类型创建一个新列 ( )
  5. 将数据复制UserIdTempUserId
  6. 降低UserIdTemp

推荐阅读