Как я могу загрузить базу данных SQLITE из буфера с C API? - PullRequest
2 голосов
/ 23 декабря 2010

Я пытаюсь загрузить базу данных из памяти вместо открытия файла .sqlite.Я прочитал ссылку на API C / C ++, но не могу найти правильный метод.

Буфер, который я пытаюсь загрузить, - это просто файл sqlite, загруженный в память.Я просто хочу использовать этот буфер (массив const char *) без использования файловой системы (я мог бы сохранить этот буфер в файле, затем загрузить файл, но нет).

Сначала я создаю памятьDB: mErrorCode = sqlite3_open_v2(":memory:", &mSqlDatabase, lMode, NULL);

Это возвращает SQLITE_OK, затем я попытался использовать буфер в качестве оператора и вызвать preparev2(MyDB, MyBufferData, MyBufferLength, MyStatement, NULL), но на самом деле это не оператор, и он возвращает ошибку.Тот же результат, если я вызываю напрямую exec(MyDB, MyBufferData, NULL, NULL, NULL);

Я полагаю, что для этого есть подходящий метод, так как обычно загрузка БД из потока или из расшифрованных данных может быть ...Спасибо.

1 Ответ

1 голос
/ 23 декабря 2010

Я считаю, что правильный способ сделать это - создать слой SQLite VFS вокруг вашего буфера, как упоминалось в этом потоке. Упоминается возможное / частичное решение spmemvfs здесь , хотя я никогда не пробовал его.

Если вам не нужен параллелизм для вашей БД, создание собственной реализации VFS должно быть довольно простым.

...