【问题标题】:Changing a Column type in my Android App's Database更改我的 Android 应用程序数据库中的列类型
【发布时间】:2014-02-04 01:05:29
【问题描述】:

我在 Play 商店中发布了一个应用程序。

该应用程序使用一个数据库,该数据库包含一个具有 int 类型列的表。

我正在做一个新的更改,我需要将列类型更改为长。

如何在我创建的 DatabaseHandler 中处理它。

我想保留存储在旧应用数据库中的数据,那么理想情况下 onUpgrade() 函数中的代码应该是什么?

【问题讨论】:

  • LONG 不是 SQLite 数据类型,因此如果您使用它,亲和性实际上将是 NUMERIC,我想这不是您的意图。坚持INT。
  • 你的表有多少行?

标签: android sqlite upgrade


【解决方案1】:

我认为使用 SQLite,最好的方法是创建一个临时表,复制所有表内容,删除旧表并在列上使用正确类型重新创建表,然后您可以从临时表中复制内容表并删除它...

我知道这不是最好的方法,但我不认为 SQLite 有一些更改表功能。

【讨论】:

    【解决方案2】:

    据我所知,你不能这样做。但是您可以删除您的表(如果存在)并重新创建它。也许你可以在这里SQLite Modify ColumnModify a Column's Type in sqlite3找到一些有用的信息

    【讨论】:

      【解决方案3】:

      您不需要更改数据库列类型。 INTEGER 列将包含表示 Java long 所需的所有位。

      其实there's no long column type in sqlite

      【讨论】:

      • 我也有同样的问题,但是我需要将列类型从VARCHAR更改为BOOL。如何将存储为 VARCHAR 的现有数据转换为 BOOL。
      • @Iaalto:我在资产文件夹中有数据库。在数据库中,我有一个名为“type”的列,其数据类型为“Varchar”。我需要为我的应用发布更新。在新版本中,我需要将“type”列的数据类型从“Varchar”更改为“Integer”。如果我将其更改为“整数”,“类型”列中已经存储为“Varchar”的现有数据会发生什么情况。我需要编写任何迁移代码吗?如果是,该怎么做。
      猜你喜欢
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多