繁体   English   中英

sql onUpgrade新用户

[英]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负责更改某些现有数据库以具有当前版本的模式。

您可以在onCreateonUpgrade之间共享代码,但是调用该代码是您自己的责任。 返回onXxx回调后,框架不会再次检查版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM