当前位置: 首页 > 面试题库 >

SQLiteOpenHelper中的onDowngrade()(或降级时不会崩溃的另一种方法)

苏骏
2023-03-14
问题内容

Java的新手。使用我的应用程序后,我决定将DATABASE_VERSION降为1(没有真正的理由)。

当我启动该应用程序时,它崩溃了,错误之一是:

E /
AndroidRuntime(14905):原因:android.database.sqlite.SQLiteException:无法将数据库从版本17降级为4

E /
AndroidRuntime(14905):位于android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:307)

我已经有一个onUpgrade(),在其中删除表然后运行onCreate()…,所以我以为会做一个onDowngrade()

@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    onUpgrade(db);
}

但这显然不是我可以重写的超类方法。

有没有一种方法(希望有一种简便的方法)可以允许我将数据库版本更改为我想要的任何数量,并使它仍然运行而不会立即崩溃?


问题答案:

有没有一种方法(希望有一种简便的方法)可以允许我将数据库版本更改为我想要的任何数量,并使它仍然运行而不会立即崩溃?

在开发中,只需通过“设置”中应用程序的“清除数据”按钮或通过从设置中卸载应用程序或擦除整个仿真器(如果是仿真器),就可以摆脱数据库。你的数据库将重新上一次运行通过调用创建onCreate()你的SQLiteOpenHelper

正如rciovati指出的那样,在生产中,仅在API Level 11中引入了支持降级的概念,而我从未亲自进行过尝试。



 类似资料:
  • 我正在尝试使用、和(不使用)实现实时相机应用程序 所以,我发现这篇教程 http://altitudelabs.com/blog/real-time-filter/ 它是用Objective-C编写的,所以我在Swift4.0中重写了那个代码,xcode9 它看起来工作很好,但有时(很少),它崩溃了以下错误。调用的方法时 EXC_BAD_ACCESS(代码=1,地址+0x************)

  • Firebase崩溃报告捕获的异常: 异常java.lang.运行时异常:无法启动活动ComponentInfo{com.talmir.mickinet/com.talmir.mickinet.activities.HomeActivity}:android.content.res.资源$NotFound异常:资源ID 0x7f080058android.app.ActivityThread.pe

  • 我开发的应用程序在使用Android Studio进行测试时效果很好。但是在谷歌Play商店发布后遇到了问题。 该应用程序具有多个页面。其中一个页面使用Unity启动AR图像跟踪功能,只需单击一个按钮即可。从Android Studio将应用程序添加到我的手机时完全没有问题,一切正常。但是,当从谷歌Play商店下载时,当单击按钮启动unity时,它会立即崩溃。 我是一个新的Android开发者。任

  • 问题内容: AFAIK Java将日期存储在长变量中,以毫秒为单位。因此,有一天将没有任何值(因为long具有最大值)将与该时刻对应。你知道什么时候会发生吗? 问题答案: 很容易找出: 提供输出(在我的盒子上): 您可能需要从中减去一点以应对时区超出long范围的情况,但这将提供合理的余地:)

  • 我从Stackoverflow的某人那里得知,这个错误是在8.4.0 Final之后的某个地方引入的,所以我想知道我如何成功地将我的版本降级到那个版本。 我目前正在使用: Optaplanner 8.8.0 Final Quarkus2.0.2决赛 打开JDK 11 Windows 10 有人知道如何降级(或为最新最终版本的问题创建解决方案)吗?

  • 问题内容: 如果原始类未知,将导致崩溃。我已经看到再追从斯威夫特的早期历史这个问题的日期,使用Objective C语言所需的唯一解决方案(也预先日斯威夫特2的实现,,和)。我可以弄清楚Objective C的路线- 但如果可能的话,我宁愿理解仅Swift的解决方案。 例如- 数据已使用编码。如果编码数据的类别未知,则以下代码将失败。 我正在寻找一种Swift 2唯一的方法来尝试尝试之前测试数据是