【问题标题】:Xamarin - SQLite Database does not actually containing the dataXamarin - SQLite 数据库实际上并不包含数据
【发布时间】:2018-11-05 17:13:34
【问题描述】:

目前在 XF 应用程序中遇到问题,我的 SQLite db3 文件始终显示为空(当我将其从设备/等复制时)。当我进入 ADB Shell 并查看目录列表时,我看到了它和共享内存文件 db3-shm/db3-wal。这些文件要大得多,就像它们是包含数据的实际文件一样。有什么想法吗?

使用 sqlite-net-pcl 包并在 Android 8.1.0 上运行

【问题讨论】:

标签: sqlite xamarin xamarin.forms


【解决方案1】:

您可以通过ExecuteScalarAsync 使用 SQLite PRAGMA SQL 语句重新启动/截断预写日志。

var result = await conn.ExecuteScalarAsync<int>("PRAGMA wal_checkpoint(TRUNCATE);", new string[] { });

回复:https://sqlite.org/pragma.html#pragma_wal_checkpoint

示例:

PRAGMA schema.wal_checkpoint;
PRAGMA schema.wal_checkpoint(PASSIVE);
PRAGMA schema.wal_checkpoint(FULL);
PRAGMA schema.wal_checkpoint(RESTART);
PRAGMA schema.wal_checkpoint(TRUNCATE);

【讨论】:

  • 我最终回滚到以前的 SQLite nuget 包(在 WAL 支持之前),直到我可以进一步研究。我一定会查看您的链接并尝试更好地理解它。感谢回复!
【解决方案2】:

我也遇到过这个问题。我已经将 .db3-shm 和 .db3-wal 文件与 .db3 文件一起复制,以便在 SQLite 的数据库浏览器中查看数据。我认为数据存储在这些文件中。你可以阅读关于他们在这里.. https://www.sqlite.org/fileformat2.html#walindexformat

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2021-10-24
    • 2019-01-18
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多