安卓 SQLite : Replace old database with a new one or use migration scripts

标签 android database sqlite

我有一个使用 SQLite 数据库和 Active Android 的 Android 应用程序作为 ORM。在每次应用程序更新时,我都需要用新的/更新的数据发送我的数据库。这就是我一直在做的

  1. 我有一个my_app.db数据库
  2. 我对 my_app.db
  3. 的行、表等进行了修改
  4. 我将修改后的 my_app.db 保存为 my_app_v2.db(依此类推)
  5. 我用 my_app_v2.db 替换了 assets 文件夹的 my_app.db 文件并将其设置为默认数据库
  6. 我使用新创建的 my_app_v2.db
  7. 编译并运行程序

因此,当用户获取该应用时,它将使用包含新内容的 my_app_v2.db

我知道 Active Android supports migration scripts ,但在每次数据库更新时,我需要添加/更新大约 2000 多条记录。因此,对于每次数据库更新,我都需要一个包含 2000 多条插入/更新语句的迁移脚本,这意味着对于 3 次以上的连续升级,应用程序必须执行大约 6000 多条语句。

我想知道我用新数据库替换整个数据库的方法是否是一种不好的做法,应该首选迁移脚本。

最佳答案

你不需要那样做(重命名东西或任何东西)

您只需要更改您的数据库版本并编写一个 sql 命令来更改您以前的表以从版本 A 迁移到版本 B。

查看此链接:

Android: upgrading DB version and adding new table

关于安卓 SQLite : Replace old database with a new one or use migration scripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39966540/

相关文章:

mysql - 如何db :setup mysql2 database?

ruby-on-rails - 启动rails5服务器时sqlite3加载错误

android - OKHttp 添加 header

android - Netbeans 8.1,Gluon 项目 Android 错误

android - Picasso 无法加载大图像(来自 Camera 和本地 Uri)

javascript - 如何使用 Nodejs 将 SQLite 索引放入变量中?

sqlite - 有什么方法可以将 Realm 数据库文件转换为 sqlite?

android - 在不同目录中找到 SQLite 数据库

database - 为什么 oracle 只允许每个表有一个 LONG 列?

java - 如何读取文件并将其内容添加到数据库?