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

时间:2008-11-10 10:32:41

标签: c sqlite

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

数据库已加载到内存中。

2 个答案:

答案 0 :(得分:11)

使用特殊文件名:memory:

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

libsqlite必须已编译,未经 SQLITE_OMIT_MEMORYDB定义,如SQLite documentation中所述:

  

<强> SQLITE_OMIT_MEMORYDB

     
    

定义它时,库不遵循特殊数据库名":memory:"(通常用于创建内存数据库)。如果":memory:"传递给sqlite3_open()sqlite3_open16()sqlite3_open_v2(),则会打开或创建具有此名称的文件。

  

如果你想读取已经已经完全加载到内存中的数据库,那将会更有效。您必须实现一个自定义VFS层来操作内存文件,并将其注册到您的SQLite上下文中。

请参阅:

我自己没有实现它,所以我无法可靠地判断你是否必须实现整个新的VFS层,或者你可以在默认值中替换一些函数(后者不太可能)。

答案 1 :(得分:1)