代码之家  ›  专栏  ›  技术社区  ›  Klathzazt

如何使用sqlite从内存中打开数据库?

  •  4
  • Klathzazt  · 技术社区  · 16 年前

    看起来加载sqlite的所有方法都涉及使用字符串从命名文件加载。我想从内存加载sqlite数据库。

    数据库已加载到内存中。

    2 回复  |  直到 11 年前
        1
  •  10
  •   Alex B    16 年前

    使用特殊文件名, :memory:

    sqlite3_open(":memory:", &db);
    

    libsqlite 必须已编译 没有 SQLITE_OMIT_MEMORYDB 定义,如 SQLite documentation :

    sqlite_omit_memorydb

    定义此名称时,库不尊重特殊的数据库名称 ":memory:" (通常用于创建内存中的数据库)。如果 “记忆:” 传递给 sqlite3_open() , sqlite3_open16() sqlite3_open_v2() ,将打开或创建具有此名称的文件。

    如果要读取的数据库是 已经 但是,如果完全加载到内存中,将需要更多的工作。您必须实现一个自定义的VFS层来操作内存文件,并将其注册到您的sqlite上下文中。

    见:

    我自己还没有实现它,所以我不能可靠地告诉您是否需要实现整个新的VFS层,或者您可以在默认层中替换一些函数(后者不太可能)。

        2
  •  1
  •   Stals    11 年前

    在以下位置有一个memvfs实现:

    article.gmane.org/gmane.comp.db.sqlite.general/46450