C++ 如何使用C API从缓冲区加载SQLITE数据库?

C++ 如何使用C API从缓冲区加载SQLITE数据库?,c++,database,sqlite,stream,buffer,C++,Database,Sqlite,Stream,Buffer,我试图从内存加载数据库,而不是打开.sqlite文件。我已经阅读了C/C++API参考资料,但找不到合适的方法 我试图加载的缓冲区只是一个加载到内存中的sqlite文件。我只想在不使用文件系统的情况下使用这个缓冲区(constchar*数组)(我可以将这个缓冲区保存在一个文件中,然后加载该文件,但不是) 首先,我创建一个内存数据库: mErrorCode=sqlite3\u open\u v2(“:内存:”,&mSqlDatabase,lMode,NULL); 这将返回SQLITE_OK,然

我试图从内存加载数据库,而不是打开.sqlite文件。我已经阅读了C/C++API参考资料,但找不到合适的方法

我试图加载的缓冲区只是一个加载到内存中的sqlite文件。我只想在不使用文件系统的情况下使用这个缓冲区(constchar*数组)(我可以将这个缓冲区保存在一个文件中,然后加载该文件,但不是)

首先,我创建一个内存数据库:

mErrorCode=sqlite3\u open\u v2(“:内存:”,&mSqlDatabase,lMode,NULL);

这将返回SQLITE_OK,然后我尝试将缓冲区用作语句并调用
preparev2(MyDB,MyBufferData,MyBufferLength,MyStatement,NULL)
,但它实际上不是一个语句,它返回了一个错误。如果我直接调用exec(MyDB,MyBufferData,NULL,NULL,NULL),结果相同

我想有一个合适的方法来实现这一点,因为从流或解密数据加载DB可能很常见


谢谢。

我认为正确的方法是在缓冲区周围创建一个缓冲区,如线程中所述。提到了一个可能的/部分的解决方案,尽管我从未尝试过


如果数据库不需要并发,那么创建自己的VFS实现应该非常简单。

谢谢!我使用了spmemvfs,它可以工作。但是,如果它可以帮助其他人,那么_open()方法中指定的文件名不应该是“:memory:”否则,它不会加载缓冲区的内容。rockeye,您可以发布一个工作示例吗?我似乎无法使用spmemvfs使其工作。