【问题标题】:How do I create a sqllite3 in-memory database?如何创建 sqlite3 内存数据库?
【发布时间】:2010-09-23 04:40:12
【问题描述】:

sqlite3appropriate uses 之一是“内存数据库”。对于我的 C++ 应用程序来说,这听起来像是一个非常有用的工具。有没有人有一个例子说明这是如何在 C 或 C++ 中完成的?我正在寻找一种规范的方法来将几个平面文件放入内存数据库中,然后进行一些连接。

【问题讨论】:

    标签: c++ c database sqlite in-memory-database


    【解决方案1】:

    只需打开文件 :memory: 就可以了(至少在 PHP 中是这样)。

    您提到您想读取几个平面文件并对其进行连接。如果可以将平面文件存储为 SQLite 数据库,则可以通过将一个附加到另一个来直接使用两者:

    ATTACH foo.db AS foo
    

    然后像这样引用 foo 中的表:

    SELECT * FROM foo.users
    

    通过这种方式,您无需创建内存数据库即可进行连接。

    【讨论】:

      【解决方案2】:

      其实很简单。使用 C/C++ API 打开数据库时,只需指定 ':memory:' 作为数据库文件名。这是引擎将识别的特殊常数。这实际上适用于其他语言,例如 Python 或 Ruby,因为它们通常只是包装 C/C++ API。详情请参阅http://sqlite.org/c3ref/open.html

      【讨论】:

        【解决方案3】:

        如果您希望 SQLite 不使用临时文件作为日志,例如,除了手动请求连接、断开连接、附加或分离时,您不希望任何文件活动。然后在连接到 ":memory:" 数据库后在运行时使用以下两个 pragma。

        PRAGMA temp_store=MEMORY;
        PRAGMA journal_mode=MEMORY;
        

        来自docs.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-05
          • 2014-05-21
          • 1970-01-01
          • 2020-12-07
          • 2011-01-12
          相关资源
          最近更新 更多