有人可以向我解释一下 Sqlite 版本的事情吗

Can somebody explain to me the Sqlite version thing

我有这个代码

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

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

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

您在数据库架构更改时更改版本代码。当用户更改他们的数据时,您不会更改版本号。架构是数据库的结构。 IE。 table 定义。

假设您向应用商店发布了一个应用版本,您的用户数据库 table 看起来像这样(为简洁起见省略了注释):

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

然后您返回开发并为您的应用创建一个新功能,让您也可以存储用户最喜欢的颜色,也许它还需要存储他们是否使用 Canadian/British 拼写的单词。

现在 table 看起来像这样:

@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。之后,当你发布你的第一个更新并且数据库结构发生变化时,你必须考虑版本号。