Spec-Zone.ru › SQLite

Десериализация базы данных

int sqlite3_deserialize(
  sqlite3 *db,            /* The database connection */
  const char *zSchema,    /* Which DB to reopen with the deserialization */
  unsigned char *pData,   /* The serialized database content */
  sqlite3_int64 szDb,     /* Number of bytes in the deserialization */
  sqlite3_int64 szBuf,    /* Total size of buffer pData[] */
  unsigned mFlags         /* Zero or more SQLITE_DESERIALIZE_* flags */
);

Интерфейс sqlite3_deserialize(D,S,P,N,M,F) отключает соединение с базой данных D от базы данных S, а затем повторно открывает S как базу данных в памяти на основе сериализованных данных, содержащихся в P. Если S — нулевой указатель, используется главная база данных. Размер сериализованной базы данных P составляет N байт. M — размер буфера P, который может быть больше N. Если M больше N и в F не установлен бит SQLITE_DESERIALIZE_READONLY, SQLite может добавлять данные в базу данных в памяти, пока их общий размер не превысит M байт.

Если в F установлен бит SQLITE_DESERIALIZE_FREEONCLOSE, SQLite вызовет sqlite3_free() для буфера сериализованных данных при закрытии соединения с базой данных. Если установлен бит SQLITE_DESERIALIZE_RESIZEABLE, SQLite попытается увеличить размер буфера с помощью sqlite3_realloc64(), если в результате записи размер базы данных превысит M байт.

Приложения не должны изменять буфер P или делать его недействительным до закрытия соединения с базой данных D.

Интерфейс sqlite3_deserialize() завершится ошибкой SQLITE_BUSY, если в базе данных в данный момент выполняется транзакция чтения или она задействована в операции резервного копирования.

Десериализовать данные в базу данных TEMP невозможно. Если аргумент S функции sqlite3_deserialize(D,S,P,N,M,F) равен "temp", функция возвращает SQLITE_ERROR.

Десериализованная база данных не должна находиться в режиме WAL. Если база данных находится в режиме WAL, любая попытка использовать файл базы данных приведёт к ошибке SQLITE_CANTOPEN. Чтобы обойти это ограничение, приложение может перед вызовом sqlite3_deserialize(D,S,P,N,M,F) установить номера версии формата файла (байты 18 и 19) входной базы данных P в значение 0x01, принудительно переведя файл базы данных в режим отката.

Если sqlite3_deserialize(D,S,P,N,M,F) завершается ошибкой по любой причине и в аргументе F установлен бит SQLITE_DESERIALIZE_FREEONCLOSE, перед возвратом вызывается sqlite3_free() для аргумента P.

Этот интерфейс не включается, если SQLite скомпилирована с параметром SQLITE_OMIT_DESERIALIZE.

См. также списки объектов, констант и функций.

SQLite is in the Public Domain.
https://sqlite.org/c3ref/deserialize.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API