android - Android 中的 onUpgrade() sqlite 数据库

标签 android sqlite

我创建了一个 Android 应用程序,它在启动时检查是否有新版本的应用程序。如果是,应用程序下载新的 apk 文件并安装新的 apk。 我的应用程序使用 sqlite 数据库。但是这个数据库,从一个版本到另一个版本可以改变。 我想我必须使用以下方法:

 onUpgrade()

但是我不知 Prop 体怎么用。

当我启动应用程序时,我将此代码用于 crete 数据库(如果不存在):

DbHelper mDHelper = new DbHelper(context, DB_NAME, null, DB_VERSION)

如果我想使用onUpgrade() 方法,我应该改变什么? 我什么时候必须调用它?

最佳答案

onUpgrade() 在您的数据库版本发生变化时被调用(您不会自己调用它),这意味着基础表结构发生变化等。

一般来说,这意味着操作系统告诉你“嘿,你要求数据库结构版本 10,但我发现我们这里有一些旧的东西,所以这是你在开始使用数据库之前修复它的机会(并且可能由于结构不匹配而崩溃)”

在那种方法中,你应该做所有必要的事情,好吧..升级你的旧数据库的结构以匹配当前版本要求的结构,比如添加/删除列,转换行内容,甚至完全删除旧数据库并从头开始创建它- 对于 Android,你在这里做什么并不重要 - 它只是一种紧急回调,让你的代码完成必要的工作(如果有的话)。您需要注意用户可能不会经常更新,因此您必须始终处理从版本 X 到 Y 的升级,因为 X 可能不等于(Y-1)。

关于android - Android 中的 onUpgrade() sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159210/

相关文章:

android - 有限制的 Realm 查询

java - Android:让应用程序通过网络(在其他手机上)向另一个应用程序发送请求

android - 如何从 ListView 项更新 SQLite 行?

c# - 密码保护 SQLite 数据库。可能吗?

android - 使用 ORMLite 创建表期间的列未与 Bean 对齐

android - AlarmManager 无法在装有 Android 的华硕 ZenFone 2 设备上运行

安卓字节码 : value of some variables not defined

Android:让EditText类似于Chrome的URL框

c++ - 在 SQLite C/C++ API 中定义常量

sql - SQLite:根据其他列的条件将值除以一列