Spec-Zone.ru › SQLite

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

unsigned char *sqlite3_serialize(
  sqlite3 *db,           /* The database connection */
  const char *zSchema,   /* Which DB to serialize. ex: "main", "temp", ... */
  sqlite3_int64 *piSize, /* Write size of the DB here, if not NULL */
  unsigned int mFlags    /* Zero or more SQLITE_SERIALIZE_* flags */
);

Интерфейс sqlite3_serialize(D,S,P,F) возвращает указатель на память, представляющую сериализацию базы данных S по подключению базы данных D. Если P не является нулевым указателем, размер базы данных в байтах записывается в *P.

Для обычного файла базы данных на диске сериализация — это просто копия файла диска. Для базы данных в памяти или базы данных «TEMP» сериализация — это та же последовательность байтов, которая была бы записана на диск, если бы эта база данных была резервирована на диск.

В обычном случае sqlite3_serialize() копирует сериализацию базы данных в память, полученную из sqlite3_malloc64(), и возвращает указатель на эту память. Вызывающая сторона отвечает за освобождение возвращённого значения, чтобы избежать утечки памяти. Однако, если аргумент F содержит бит SQLITE_SERIALIZE_NOCOPY, то выделение памяти не производится, и функция sqlite3_serialize() вернёт указатель на непрерывное представление в памяти базы данных, используемое SQLite для этой базы данных, или NULL, если такого непрерывного представления базы данных не существует. Размер базы данных записывается в *P даже если бит SQLITE_SERIALIZE_NOCOPY установлен, но непрерывной копии базы данных не существует.

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

Вызов sqlite3_serialize(D,S,P,F) может вернуть NULL даже если бит SQLITE_SERIALIZE_NOCOPY опущен из аргумента F, если произошла ошибка выделения памяти.

Этот интерфейс опущен, если SQLite скомпилирован с опцией SQLITE_OMIT_DESERIALIZE.

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

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

Spec-Zone.ru

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