Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用SQLite从内存中打开数据库?_C_Sqlite - Fatal编程技术网

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

C 如何使用SQLite从内存中打开数据库?,c,sqlite,C,Sqlite,似乎所有加载SQLite的方法都涉及使用字符串从命名文件加载。我想从内存中加载SQlite数据库 数据库已加载到内存中。使用特殊文件名,:内存: sqlite3_open(":memory:", &db); libsqlite必须编译而未定义SQLITE\u OMIT\u MEMORYDB,如下所述: SQLITE\u省略\u记忆db 定义此项时,库不考虑特殊数据库名称”:memory:“(通常用于创建内存内数据库)。如果”:内存:“被传递到sqlite3\u open(),sqlit

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


数据库已加载到内存中。

使用特殊文件名,
:内存:

sqlite3_open(":memory:", &db);
libsqlite
必须编译而未定义
SQLITE\u OMIT\u MEMORYDB
,如下所述:

SQLITE\u省略\u记忆db

定义此项时,库不考虑特殊数据库名称
”:memory:“
(通常用于创建内存内数据库)。如果
”:内存:“
被传递到
sqlite3\u open()
sqlite3\u open16()
,或
sqlite3\u open\u v2()
,则将打开或创建具有此名称的文件

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

见:


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

目前有一个memvfs实现


关于如何实施的详细信息,或者这是否超出了本问题的范围?如果有人能填写这些细节,我将不胜感激,因此这里有一个端到端的解决方案。这是公共页面。