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

Kla*_*azt 5 c sqlite

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

数据库已加载到内存中.

Ale*_*x B 11

使用特殊文件名, :memory:

sqlite3_open(":memory:", &db);
Run Code Online (Sandbox Code Playgroud)

libsqlite必须在没有 SQLITE_OMIT_MEMORYDB定义的情况下编译,如SQLite文档中所指出:

SQLITE_OMIT_MEMORYDB

定义此选项后,库不会考虑特殊数据库名称":memory:"(通常用于创建内存数据库).如果":memory:"传递给sqlite3_open(),, sqlite3_open16()sqlite3_open_v2()将打开或创建具有此名称的文件.

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

看到:

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