gpt4 book ai didi

android - Android应用程序更新时如何处理多个数据库版本变化

转载 作者:IT王子 更新时间:2023-10-29 06:31:54 28 4
gpt4 key购买 nike

感谢您在这里阅读我的问题。

实际上,当我需要为多个 sql-lite 版本在表中添加一些行时,我对如何处理 SQLite 表 感到有些困惑。

我谷歌了东西,发现了类似这样的东西,我们必须在 onUpgrade 方法中做 alter table。这将是工作顺序更新。

Suppose i have 3 devices they have below versions of database
1) 1st device = database version 1
2) 2nd device = database version 2
3) 3rd device = application not installed.

database version 1 = 2 columns
database version 2 = 2+2 columns
database version 3 = 4+2 columns.

所以在这里,如果我需要为我的 Android 应用程序用户提供更新,那么我必须做什么?我有以下场景。

1) Updated application would be install in 3rd device where still application is not installed.
2) Application should be update from version 1 to version 3 (Device 1st).
3) Application should be update from version 2 to version 3 (Device 2nd).

在这里我可以了解如何处理场景 3,但我不知道如何处理场景 1 和场景 2。

我如何编写适用于所有场景的代码。

onUpgrade 方法将只调用数据库版本更改和创建数据库时调用 onCreate。

谢谢任何帮助和建议将不胜感激。

最佳答案

根据您提到的内容(例如 onUpgrade 方法),我假设您使用的是 SQLiteOpenHelper。

首先将您的数据库版本更新为 3。

在 onCreate(SQLiteDatabase db) 中,更新代码以便它根据最新版本 3 模式创建所有表(例如表有 col1、col2 和 col3)。新安装将触发此代码创建一个全新的 v3 表。

在onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)中,引用新旧版本参数,更新已经存在的表,例如

if (oldVersion == 1 && newVersion = 2)
{
//Going from v1 to v2
db.execSQL("ALTER TABLE mytable ADD COLUMN col2 INTEGER");
}

if (oldVersion == 1 && newVersion = 3)
{
//Going from v1 to v3
db.execSQL("ALTER TABLE mytable ADD COLUMN col2 INTEGER");
db.execSQL("ALTER TABLE mytable ADD COLUMN col3 INTEGER");
}

if (oldVersion == 2 && newVersion = 3)
{
//Going from v2 to v3
db.execSQL("ALTER TABLE mytable ADD COLUMN col3 INTEGER");
}

当数据库版本与用户当前拥有的版本不匹配时,将触发此代码。您知道他们有什么版本,因此可以相应地修改现有表,使它们达到与 onCreate 中相同的定义。当然,您可以在 onUpgrade 中做任何您喜欢的事情,例如创建新表和插入/更新/删除数据。

关于android - Android应用程序更新时如何处理多个数据库版本变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20349902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com