gpt4 book ai didi

android - SQLite onUpgrade()

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:32 28 4
gpt4 key购买 nike

我在 android 中的 SQLite 数据库中遇到问题。

在 SQLiteOpenHelper 类的 onCreate(SQLiteDatabase db) 方法中,我正在创建表。现在我在 Playstore 上传了这个应用程序。现在我想我需要在这些表中再添加一个列。

如果我在 Playstore 中更新应用程序(在 onCreate() 方法中使用新查询),下次将调用 OnUpgrade() 方法,因此不会再次创建表。

所以请告诉我有什么方法可以在重新安装或更新应用程序时删除 SQLite 数据库...或者在重新安装之前删除整个应用程序?

最佳答案

<强>1。关于 onCreate() 和 onUpdate()

onCreate(..) 会在应用程序刚安装时被调用。每当应用程序升级并启动并且数据库版本不同时,都会调用 onUpgrade。

你需要一个像这样的构造函数:

<强>2。增加数据库版本

MyOpenHelper(Context context) {
super(context, "dbname", null, 2);
}

重要提示:仅增加应用程序版本不足以调用 onUpgrade。

<强>3。不要忘记您的新用户!

不要忘记添加

database.execSQL(DATABASE_CREATE_color);

您的 onCreate() 方法以及新安装的应用程序将缺少该表。

<强>4。如何处理随时间变化的多个数据库

当你有连续的应用程序升级时,其中有几个有数据库升级,你要确保检查旧版本:

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 1:
db.execSQL(DATABASE_CREATE_color);
// we want both updates, so no break statement here...
case 2:
db.execSQL(DATABASE_CREATE_someothertable);
}
}

这样,当用户从版本 1 升级到版本 3 时,他们会同时获得两个更新。当用户从版本 2 升级到版本 3 时,他们只会获得修订版 3 更新……毕竟,您不能指望每次发布更新时 100% 的用户群都会升级。有时他们会跳过更新或 12 :)

希望这是有道理的。

<强>5。在开发过程中控制修订号

最后...调用

adb uninstall <yourpackagename>

完全卸载应用程序。当您再次安装时,您一定会点击 onCreate 方法,这样您就不必不断将数据库版本递增到平流层...

关于android - SQLite onUpgrade(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14579175/

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