android - 将旧版本的 SQLite 数据库复制到较新版本的应用程序时如何避免崩溃

标签 android android-sqlite

我为我的用户提供了备份 sqlite 数据库的选项。我这样做的方法是将它复制到外部存储器。如果需要,他们可以将其加载回去。

但是,我想知道如何解决这种情况:

如果我的用户在版本 1 中备份了数据库。将应用程序更新到版本 2,这是一个更改的数据库。然后我的用户加载数据库(旧版本)。这将导致应用程序崩溃 有没有办法 1-检测用户复制的数据库版本,所以我比较它当前的数据库版本并阻止复制? 2-(甚至更好)能够将复制的数据库版本更新为版本 2 并将其加载到我的应用程序中?

在此方面的任何帮助表示赞赏 谢谢

最佳答案

我有一个应用程序,可以让用户保存数据库。但是,为了避免这种问题,我不只是“复制”数据库文件来保存它,而是将数据库中包含的数据以特定方式写入另一个文件(保存文件),换句话说,我创建了一种新的文件格式来存储导出的数据。

而且,当我需要恢复导出的数据时,我所要做的就是解析保存文件,并将导入的数据插入数据库。因此,我控制导出和导入的内容。

实现起来比较复杂,但我认为这是最好的做法。

关于android - 将旧版本的 SQLite 数据库复制到较新版本的应用程序时如何避免崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638421/

相关文章:

android - Sqlite 数据库中的 ID 冲突?

android - 使用主要的自动递增列更新原始数据

java - Android:存储在 SQLite 中时图像的字节数组为空

android - 在 Android Studio 中创建基于 Phonegap 的 Android 应用

android - 在 Android 上测试与服务器的连接

java - Android Q(API 级别 29)不加载 HTTPS 网站。给出错误:(net::ERR_ACCESS_DENIED)

java - 用android Canvas 绘制的动画/闪光圆

android - 如何从适配器中消除 DialogFragment?

java - 从 CursorWindow 读取时出错

java - 如何在 Android 中将 Image 转换为 byte[]