是否可以将 SQLite DB 从 zip 文件直接打开到内存中?

问题描述 投票:0回答:1

我正在尝试打开 zip 文件内的 SQLite 数据库。我不想提取文件或创建临时文件,我想让数据库完全存在于内存中。这可能吗?

我正在使用 C#/DotNetZip。我想这样做是因为相关数据库是敏感的,并且 zip 文件受密码保护,因此我不希望文件系统中的用户在使用数据库时可以访问该数据库。

c# sqlite dotnetzip
1个回答
0
投票

您应该能够使用 DotNetZip 获取压缩文件的 stream。从那里您可以复制到

MemoryStream
,然后您可以检查此答案以获取有关从 MemoryStream 打开 Sqlite DB 的提示:

从流中打开/关闭数据库

不幸的是,该答案包含以下信息:

这意味着您无法使用现有数据库。您创建一个数据库,使用它,然后再次销毁它。文件级别没有持久性。

我们可以进一步了解此链接,该链接演示了如何使用备份 API 将现有数据库加载到仅内存数据库中:

https://www.appsloveworld.com/csharp/100/47/memory-stream-as-db

当然,完成后你可以反向执行相同的操作,但遗憾的是,它仍然让我们不知道如何首先加载 MemoryStream。这很好,因为它可以确保在您“真的”准备好最后提交更改之前不需要将任何内容写入较慢的磁盘。 但最终,这意味着我们可能无法实现我们想要的目的。

© www.soinside.com 2019 - 2024. All rights reserved.