gpt4 book ai didi

Android onUpgrade 每次都会被调用

转载 作者:行者123 更新时间:2023-11-30 04:40:00 29 4
gpt4 key购买 nike

我正在尝试通过向我的 android 应用程序中的 Sqlite 表添加一列来升级某个表。我在我的 DBHelper 的 onUpgrade 方法中添加了一个 alter table 语句。

这是我遇到的问题我将数据库版本的值从 1 更改为 2,因此理想情况下现在应该调用 onUpgrade。它确实被调用,但每次实例化类时都会被调用。结果我得到一个列已经存在的错误。

这是onUpgrade方法

    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.d("old Version",oldVersion+"");
Log.d("New Version",newVersion+"");
db.beginTransaction();

try
{
String DATABASE_UPGRADE;
DATABASE_UPGRADE="alter table "+DATABASE_TABLE_MESSAGES+" ADD COLUMN "+ IS_READ+ " integer DEFAULT 0;";
db.execSQL(DATABASE_UPGRADE);
Log.d("upgrade", "Successful");
db.setTransactionSuccessful();
}


finally
{
db.endTransaction();
}

}
}

我想知道为什么每次都会调用 onUpgrade !!!

最佳答案

在数据库助手的构造函数中,您是否正确传递了新版本号?

编辑:应该是这样的

DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

DATABASE_VERSION 应该是 2。

关于Android onUpgrade 每次都会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153814/

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