看起来加载SQLite的所有方法都涉及使用字符串从命名文件加载.我想从内存加载SQlite数据库.
数据库已加载到内存中.
解决方法
使用特殊文件名,:memory:
sqlite3_open(":memory:",&db);
必须在没有定义SQLITE_OMIT_MEMORYDB的情况下编译libsqlite,如SQLite documentation所述:
SQLITE_OMIT_MEMORYDB
When this is defined,the library does not respect the special database name ":memory:" (normally used to create an in-memory database). If ":memory:" is passed to sqlite3_open() ,sqlite3_open16() ,or sqlite3_open_v2() ,a file with this name will be opened or created.
但是,如果要读取已经完全加载到内存中的数据库,那将会更有效.您必须实现一个自定义VFS层来操作内存文件并将其注册到您的SQLite上下文中.
看到:
> sqlite3_vfs > sqlite3_io_methods
我自己没有实现它,所以我无法可靠地判断你是否必须实现整个新的VFS层,或者你可以在默认的一个函数中替换一些函数(后者不太可能).
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|