11

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

4

3 回答 3

16

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

于 2008-11-20T05:21:49.623 回答
5

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

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

ATTACH foo.db AS foo

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

SELECT * FROM foo.users

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

于 2008-11-20T05:21:12.170 回答
5

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

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

文档。

于 2008-12-02T04:31:29.443 回答