您是否必须在SQLiteOpenHelper的onUpgrade方法中更改数据库架构?

时间:2015-04-20 22:55:57

标签: android database sqlite sqliteopenhelper

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

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

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

2 个答案:

答案 0 :(得分:0)

  

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

欢迎您随时随地执行ALTER TABLE语句(与所有数据库I / O一样)。

在您的情况下,我不知道您使用SQLiteOpenHelper的原因。 SQLiteOpenHelper背后的要点是帮助开发人员构建具有固定(每个版本)模式的应用程序。这不是您正在采取的路线,在这种情况下SQLiteOpenHelper可能没有多大帮助。

答案 1 :(得分:0)

仅当数据库文件已存在但存储的用户版本低于构造函数中的请求时,才会调用

onUpgrade。当我发布新版本的应用程序时,我已经使用此函数来执行我对数据库模式所做的更改。但是如果要动态添加列,是的,可以使用ALTER TABLE命令。