【问题标题】:Converting in-memory sqlite database to blob/char array将内存中的 sqlite 数据库转换为 blob/char 数组
【发布时间】:2017-04-02 22:19:31
【问题描述】:

我有一个内存中的 sqlite 数据库,我想将其转换为一个简单的 blob,并且我希望最好不使用任何序列化库来执行此操作。

我还使用 sqlite api 备份调用将其序列化到磁盘,这也可以用于我的目的吗?

或者,是否可以以任何其他方式简单地将数据库从内存复制到 char 数组? (使用C++开发)

【问题讨论】:

  • 所以您的内存中有一个 SQLite 数据库,并希望将其作为 blob 存储到另一个数据库中? YO DAWG,我听说你喜欢......(抱歉无法抗拒)。有一个很好的 QT 示例qtcentre.org/threads/… - 因为它不严重依赖 QT 函数,所以您应该能够使用 std::string 和 sqlite api 计算出仅 c++ 的版本。无论如何,看到 sqlite 的备份示例了吗?可能会重载流运算符以满足您的需要
  • 好吧,那个 qt 示例不是做备份 api 做的吗?我想要的是将整个数据库转换为保留该内存的 char 数组。基本上是复制数据库。备份 api 的内部实现了我想要的,需要研究一下。

标签: c++ sqlite


【解决方案1】:

SQLite 不允许您直接访问内存数据库的内部存储。

您可以implement your own VFS 为 blob 创建一个“文件”接口,但只浏览(临时)磁盘文件听起来要容易得多。

【讨论】:

  • 谢谢,我现在正在研究 vfs 演示 (sqlite.org/src/doc/trunk/src/test_demovfs.c),但我真的希望有一个更简单(或至少直接)的方法。涉及文件确实超级简单,但我宁愿不涉及文件系统。
  • 跟进:是否可以组合使用多个 VFS 层(我猜,不是)?显然已经有另一层用于其他目的。
  • 可以堆叠 VFS,但这不是您想要的(您只想将该 DB 存储在 blob 中)。此外,SQLite 的内存数据库根本不使用 VFS。
猜你喜欢
  • 2013-03-02
  • 2011-09-05
  • 2011-06-08
  • 1970-01-01
  • 2022-10-13
  • 2012-07-29
  • 2013-06-06
  • 2016-03-10
相关资源
最近更新 更多