Как я могу использовать SQLite, чтобы открыть базу данных из памяти? - PullRequest
5 голосов
/ 10 ноября 2008

Похоже, что все методы загрузки SQLite включают загрузку из именованного файла с использованием строки. Я хочу загрузить базу данных SQlite из памяти.

База данных уже загружена в память.

Ответы [ 2 ]

11 голосов
/ 10 ноября 2008

Используйте специальное имя файла, :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, или вы можете обойтись без замены некоторых функций по умолчанию (последний маловероятен).

1 голос
/ 01 мая 2009

В

есть реализация memvfs

article.gmane.org / gmane.comp.db.sqlite.general / 46450

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...