gpt4 book ai didi

java - 如何解决Android更新不同数据库的问题

转载 作者:行者123 更新时间:2023-12-02 12:00:55 24 4
gpt4 key购买 nike

我开发了一个已在 GooglePlay 上运行的应用程序,现在我需要修改一些需要数据库中更多列的部分。但我遇到了问题,问题是当我将带有更多列的新 APK 发布到 Playstore 时,我在数据库中找不到这些新列,但是当我卸载时首先,然后我安装新的APK,问题就消失了,

如何修复这个错误?

最佳答案

你必须使用onUpgrade()反射(reflect)本地和实时应用程序变化的方法。

onUpgrade()仅当数据库文件存在但存储的版本号低于构造函数中请求的版本号时才调用。 onUpgrade()应将表架构更新为请求的版本。

在代码 ( onCreate() ) 中更改表架构时,应确保数据库已更新。两种主要方法:

  1. 删除旧数据库文件,以便 onCreate()再次运行。这在开发时通常是首选,因为您可以控制已安装的版本并且数据丢失不是问题。删除数据库文件的一些方法:

    • 卸载应用程序。使用应用程序管理器或 adb uninstall your.package.name来自外壳。

    • 清除应用程序数据。使用应用程序管理器。

  2. 增加数据库版本,以便 onUpgrade()被调用。这稍微复杂一些,因为需要更多代码。

    • 对于数据丢失不成问题的开发时架构升级,您可以使用 execSQL("DROP TABLE IF EXISTS <tablename>")删除现有的表并调用 onCreate()重新创建数据库。

    • 对于已发布的版本,您应该在 onUpgrade() 中实现数据迁移这样您的用户就不会丢失数据。

<小时/>
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion){
case 1:
db.execSQL("ALTER TABLE " + DATABASE_TABLE + " ADD COLUMN " + NEW_COLUMN_NAME + TYPE);
}
}

检查SqlLiteOpenHelperthis explanation

关于java - 如何解决Android更新不同数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256994/

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