Android 您必须在SQLiteOpenHelper的onUpgrade方法中更改数据库模式吗?

Android 您必须在SQLiteOpenHelper的onUpgrade方法中更改数据库模式吗?,android,database,sqlite,sqliteopenhelper,Android,Database,Sqlite,Sqliteopenhelper,我正在尝试编写一个android应用程序,其中包含一个数据库,可以根据用户输入动态更改其模式 例如,假设您最初有一个表,其中唯一的列是用于不同品种小狗的列。这将是主键。然后,用户可以动态添加与此表中的新列相对应的新属性(例如颜色、有斑点、大小等) 我想知道ALTER TABLE查询是否必须在onUpgrade中执行,或者是否可以在SQLiteOpenHelper子类中的另一个方法中执行。我真的不知道是否真的有必要在每次用户想要添加新属性时增加数据库版本。谢谢 我想知道ALTER TABLE查询是

我正在尝试编写一个android应用程序,其中包含一个数据库,可以根据用户输入动态更改其模式

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

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

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

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


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

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