[英]sql onUpgrade for new users
这是一个微不足道的问题,但我担心会输入错误的生产代码,并且在设备/仿真器中进行测试可能会导致无法反映现实的缓存问题。
我的假设:
正如关于SO的文档所述,我需要在数据库中添加一列,我决定在onUpgrade()中使用ALTER table ADD column
,并将数据库构造函数中的版本从1更改为2,以便构造函数将认识到正在运行新版本,因此应触发onUpgrade()函数。
我的两个问题:
1)最重要。 假设旧用户将成功升级数据库,但是对于仍然必须创建数据库第一行的新用户会发生什么情况,因为版本为2,还是将新用户定向到OnCreate()而不是onUpgrade()? OnCreate() 然后 onUpgrade(),或者几乎出于某些API原因甚至在onUpgrade()中甚至几乎不可能跳过onCreate()吗?
换句话说,我是否需要更新新列,以更改旧的onCreate()理解新添加的列?
2)在onUpgrade()之后
ALTER <table> ADD <column>
从逻辑上讲,我必须创建一个新表吗? 我是否应该将onCreate()称为更新的Table(例如,原来有4列,而不是原来的5列)?
调用getWritableDatabase()
,它将检查数据库文件。 如果不存在,则调用onCreate
。 如果确实存在,但版本错误,则调用onUpgrade
。
因此, onCreate
负责创建当前版本的数据库模式,而onUpgrade
负责更改某些现有数据库以具有当前版本的模式。
您可以在onCreate
和onUpgrade
之间共享代码,但是调用该代码是您自己的责任。 返回onXxx
回调后,框架不会再次检查版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.