sql onUpgrade for new users

时间:2016-07-09 14:46:58

标签: android sql database sqlite upgrade

这是一个微不足道的问题,但我害怕生产错误的代码,并且在设备/模拟器中进行测试可能会导致缓存问题无法反映现实。

我的假设:

在SO上有详细记录,我需要在我的数据库中添加一列,我决定使用ALTER table ADD column 在onUpgrade()中,并将DB的构造函数中的版本从1更改为2,以便构造函数能够识别正在运行新版本并且应该触发onUpgrade()函数。

我的2个问题:

1)最重要的是。假设旧用户将成功升级数据库,但是新用户仍然需要创建数据库的第一行,它们将被定向到OnCreate()而不是onUpgrade(),因为版本是2,或者是OnCreate()和然后 onUpgrade(),或者几乎不可能直接在OnUpgrade()跳过某些API原因甚至onCreate()?

在其他方面,我是否需要更新新列更改旧的onCreate()理解新添加的列?

2)在

之后的onUpgrade()中
ALTER <table> ADD <column>

逻辑上我必须创建一个新表吗?我应该将onCreate()作为更新的表调用(例如,而不是原来的4列,现在有5列)?

1 个答案:

答案 0 :(得分:2)

调用onCreate时,它会检查数据库文件。如果它不存在,则调用onUpgrade。如果它确实存在但版本错误,则会调用onCreate

因此onUpgrade负责创建当前版本的数据库模式,而onCreate负责将某些现有数据库更改为具有当前版本的模式。

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