有人可以向我解释一下Sqlite版本的东西

时间:2017-12-13 22:40:55

标签: android sqlite android-room

我有这个代码

@Database(entities = { Report.class }, version = 1)

从我已阅读或能够收集的内容来看,每次用户更新或删除他输入的任何数据时都需要更改版本,但是如果您添加新列,则需要更新版本数据库作为开发人员,您需要更新版本,然后检查用户具有哪个版本并制作切换案例以将用户数据库从旧版本更新为新版本,在某些情况下他们保存旧版本和新版本但为什么我我在这里有点困惑。

所以我的问题是我们何时,如何以及在何处使用此版本代码。

1 个答案:

答案 0 :(得分:1)

当数据库架构发生更改时,您可以更改版本代码。用户更改其数据时,不会更改版本号。架构是数据库的结构。 IE浏览器。表定义。

假设您将应用程序的某个版本发布到商店,而您的用户数据库表看起来像这样(为简洁起见,注释除外):

@Entity
class User {
   val username: String
   val likesStarWars: Boolean
}

然后你回到开发阶段并为你的应用程序创建一个新功能,让你存储用户最喜欢的颜色,也许它还需要存储他们是否使用加拿大/英国拼写单词。

现在表格如下:

@Entity
class User {
   val username: String
   val likesStarWars: Boolean
   val britishEnglish: Boolean
   val favouriteColour: String
}

此时,在向商店发布新版本之前,必须将数据库版本从1增加到2.这向先前已安装应用程序的用户设备发出信号,表明数据库必须升级。

为了支持这些旧版本的数据库,您必须提供从数据库版本1迁移到版本2的代码。https://developer.android.com/training/data-storage/room/migrating-db-versions.html

您不必担心检查用户拥有的数据库版本,如果通过迁移正确实施Room数据库,则会由Room数据库库覆盖。该库将为您处理检查和更新数据库。

最后这个版本代码是一个非常重要的数字,你应该花时间来理解它的复杂性。在您到达商店之前首次发布应用程序期间,您的数据库将只是版本1.之后,当您发布第一个更新,并且数据库结构发生更改时,您必须考虑版本号。