Используйте специальное имя файла, :memory:
sqlite3_open(":memory:", &db);
libsqlite
должно быть скомпилировано без определения SQLITE_OMIT_MEMORYDB
, как указано в Документация по SQLite :
SQLITE_OMIT_MEMORYDB
Когда это определено, библиотека не учитывает специальное имя базы данных ":memory:"
(обычно используется для создания базы данных в памяти). Если ":memory:"
передано sqlite3_open()
, sqlite3_open16()
или sqlite3_open_v2()
, файл с этим именем будет открыт или создан.
Если вы хотите прочитать базу данных, которая уже полностью загружена в память, однако, это будет больше работы. Вам придется реализовать собственный слой VFS для работы с файлами памяти и зарегистрировать его в контексте SQLite.
См:
Я не реализовал его сам, поэтому я не могу с уверенностью сказать, нужно ли вам реализовывать весь новый слой VFS, или вы можете обойтись без замены некоторых функций по умолчанию (последний маловероятен).