【问题标题】:Do you have to alter the database schema in the onUpgrade method of the SQLiteOpenHelper?您是否必须在 SQLiteOpenHelper 的 onUpgrade 方法中更改数据库模式?
【发布时间】:2015-06-27 21:15:45
【问题描述】:

我正在尝试编写一个包含数据库的 android 应用程序,该数据库将根据用户输入动态更改其架构。

例如,假设您最初有一个表,其中唯一的列是用于不同品种小狗的列。这将是主键。然后,用户可以动态添加与该表中的新列相对应的新属性(例如颜色、有斑点、大小等)

我想知道 ALTER TABLE 查询是否必须在 onUpgrade 中执行,或者我是否可以在 SQLiteOpenHelper 子类中的另一个方法中执行它。我真的不知道每次用户想要添加新属性时是否真的需要增加数据库版本。谢谢!

【问题讨论】:

    标签: android database sqlite sqliteopenhelper


    【解决方案1】:

    我想知道 ALTER TABLE 查询是否必须在 onUpgrade 中执行,或者我是否可以在 SQLiteOpenHelper 子类中的另一个方法中执行它。

    欢迎您随时在后台线程上执行ALTER TABLE 语句,但(与所有数据库 I/O 一样)请。

    不过,就你而言,我不知道你为什么使用SQLiteOpenHelper。 SQLiteOpenHelper 背后的目的是帮助开发人员构建具有固定(每个版本)模式的应用程序。这不是您要采取的路线,在这种情况下,SQLiteOpenHelper 可能并没有太大帮助。

    【讨论】:

      【解决方案2】:

      onUpgrade 仅在数据库文件已经存在但存储的用户版本低于构造函数中请求的版本时才会调用。当我发布新版本的应用程序时,我已经使用这个函数来执行我对数据库模式所做的更改。但是如果你想动态添加列,是的,你可以使用 ALTER TABLE 命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 2020-02-15
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多