2008-11-20 71 views
10

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

回答

16

其实很简单。只需在使用C/C++ API打开数据库时指定':memory:'作为数据库文件名。发动机会识别这是一个特殊的常数。对于Python或Ruby等其他语言也是如此,因为它们通常只包装C/C++ API。有关完整的详细信息,请参见http://sqlite.org/c3ref/open.html

5

只要打开文件:内存:这应该做到这一点(至少它在PHP中)。

你提到你想阅读几个平面文件并对它们进行连接。如果它可以存储平面文件的SQLite数据库,你可以直接与这两个通过连接一个到另一个工作:

ATTACH foo.db AS foo 

然后参考该表foo中,像这样:

SELECT * FROM foo.users 

这您可以在不需要创建内存数据库的情况下进行连接。

5

如果你想的SQLite不使用临时文件作为期刊,e.g,你不希望在手动请求连接,断开连接,连接或分离以外的任何文件活动。然后在连接到“:memory:”数据库后,在运行时使用以下两个编译指示。

PRAGMA temp_store=MEMORY; 
PRAGMA journal_mode=MEMORY; 

docs.