您是否必须在 SQLiteOpenHelper 的 onUpgrade 方法中更改数据库模式?
Do you have to alter the database schema in the onUpgrade method of the SQLiteOpenHelper?
我正在尝试编写一个 android 应用程序,其中包含一个可以根据用户输入动态更改其架构的数据库。
例如,假设您最初有一个 table,其中唯一的列是不同品种的小狗的列。这将是主键。然后用户可以动态添加新属性,这些属性将对应于此 table 中的新列(例如颜色、有斑点、大小等)
我想知道 ALTER TABLE 查询是否必须在 onUpgrade 中执行,或者我是否可以在 SQLiteOpenHelper 子类中的另一个方法中执行。我真的不知道每次用户想要添加新属性时是否真的有必要增加数据库版本。谢谢!
I was wondering whether the ALTER TABLE query must be executed in onUpgrade or whether I can do it in another method within the SQLiteOpenHelper subclass.
欢迎您随时在后台线程上执行 ALTER TABLE
语句(与所有数据库 I/O 一样)。
不过,对于你的情况,我不知道你为什么要使用 SQLiteOpenHelper
。 SQLiteOpenHelper
背后的要点是帮助开发人员构建具有固定(每个版本)架构的应用程序。那不是您要走的路线,在这种情况下 SQLiteOpenHelper
可能真的帮不上什么忙。
onUpgrade 仅当数据库文件已存在但存储的用户版本低于构造函数中请求的版本时才会调用。当我发布新版本的应用程序时,我已经使用这个函数来执行我对数据库架构所做的更改。但是如果你想动态添加列,是的,你可以使用 ALTER TABLE 命令。
我正在尝试编写一个 android 应用程序,其中包含一个可以根据用户输入动态更改其架构的数据库。
例如,假设您最初有一个 table,其中唯一的列是不同品种的小狗的列。这将是主键。然后用户可以动态添加新属性,这些属性将对应于此 table 中的新列(例如颜色、有斑点、大小等)
我想知道 ALTER TABLE 查询是否必须在 onUpgrade 中执行,或者我是否可以在 SQLiteOpenHelper 子类中的另一个方法中执行。我真的不知道每次用户想要添加新属性时是否真的有必要增加数据库版本。谢谢!
I was wondering whether the ALTER TABLE query must be executed in onUpgrade or whether I can do it in another method within the SQLiteOpenHelper subclass.
欢迎您随时在后台线程上执行 ALTER TABLE
语句(与所有数据库 I/O 一样)。
不过,对于你的情况,我不知道你为什么要使用 SQLiteOpenHelper
。 SQLiteOpenHelper
背后的要点是帮助开发人员构建具有固定(每个版本)架构的应用程序。那不是您要走的路线,在这种情况下 SQLiteOpenHelper
可能真的帮不上什么忙。
onUpgrade 仅当数据库文件已存在但存储的用户版本低于构造函数中请求的版本时才会调用。当我发布新版本的应用程序时,我已经使用这个函数来执行我对数据库架构所做的更改。但是如果你想动态添加列,是的,你可以使用 ALTER TABLE 命令。