android - 有没有办法从 SQLite 中提取查询?

标签 android sqlite android-sqlite

我正在尝试在我的应用程序中创建某种备份和恢复功能。在此之前,我已经阅读了一段时间以了解是否可以实现,但我发现了这个问题: Sqlite DB Android Backup/Restore

The only other way I could see to do it, would be to read the actual contents of the DB and generate a file containing the SQL which which it can be restored from, this is obviously a more complex and doesn't offer any advantages to justify this complexity.

我认为这个答案是实现这一目标的最佳方法;不是探索 .db 文件,而是导出查询。

你知道;当您从 mysql 导出 SQL 数据时,您会得到一个文件,其中包含创建结构的所有查询以及用数据填充结构的查询。

这就是我想要模仿的;生成一个包含 .db 文件中的 sql 查询的文件。

你们认为这可能吗?我的意思是,是否有任何内置方法可以实现这一目标?

否则,如果它太难处理,您如何设法避免该用户( https://stackoverflow.com/a/10842043/1943607 )正在谈论的内容?

So, I disabled WAL with "PRAGMA journal_mode = DELETE" and then I was able to view the database in the browser and able to restore it on my test device fine.

前面那部分,我看不懂。这是您为 sqlite 设置的配置吗?

谢谢

最佳答案

我实际上并没有用 sqlite 尝试过这个,但是用 mysql 你可以做一些事情,比如创建数据库的“转储”。这些转储包含的正是您所描述的内容:一组查询,当一起执行时,会重新创建数据库,包括内容。

http://www.sqlite.org/sqlite.html 中找到的“sqlite3”文档来看(特别是“将整个数据库转换为 ASCII 文本文件”部分),您可以对 sqlite 执行相同的操作。由于您可以从 java 应用程序执行 shell 命令(使用 Runtime.getRuntime().exec() 方法),并且您是数据库的“所有者”(Linux 用户 ID),因此您应该能够运行此“sqlite3 .即使在非 root 设备上也可以使用 dump” 命令。我从未见过没有安装 sqlite3 工具的 Android 设备,因此该命令应该始终可用。

此外,由于转储文件只是一个文本文件,因此您应该能够在其中添加兼容性所需的任何 PRAGMA(如您引用的文件)。

我还没有测试过这些,只是想和你一起思考这个有趣的话题。

关于android - 有没有办法从 SQLite 中提取查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495128/

相关文章:

xcode - 电源故障后 sqlite 存储中的核心数据损坏

java - Android SQLite 更新行不起作用

java - 我无法弄清楚这个 .init() 方法是如何工作的

android - 从重定向的 URL 中检索位图

android - 将 Google 电子表格数据下载到 App Inventor 以将其显示为表格

django - 在 Centos7 上将 SQLite3 与 Django 2.2 和 Python 3.6.7 结合使用

ios - SQLite偶尔无法创建:memory: database

android - 在 Android 中很好地设置 ListView 滚动位置

java - WIFI 连接时获取 SSID?

java - 在 Android 中使用 SQLite 未将数据插入表中