![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Интерфейс sqlite3_deserialize(D,S,P,N,M,F) заставляет
соединение с базой данных D
отсоединиться от базы данных S и затем вновь открыть S как базу данных в
памяти на основе преобразования в последовательную форму содержавшегося в P.
Преобразованная в последовательную форму база данных P будет N байт в
размере. M это размер буфера P, который мог бы быть больше, чем N.
Если M больше N и бит SQLITE_DESERIALIZE_READONLY не установлен в F, SQLite
разрешают добавить содержание к базе данных в памяти, пока полный размер
не превышает M байт. Если бит SQLITE_DESERIALIZE_FREEONCLOSE утсановлен в F, 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. Приложение может установить
номера версий формата файла (байты 18
и 19) входной базы данных P в 0x01 до вызова sqlite3_deserialize(D,S,P,N,M,F),
чтобы перевести файл базы данных в режим обратной перемотки и
обойти эту проблему. Если sqlite3_deserialize(D,S,P,N,M,F)
терпит неудачу по какой-либо причине и если бит
SQLITE_DESERIALIZE_FREEONCLOSE установлен в аргументе F, то
sqlite3_free() вызван
на аргумент P до возвращения. Этот интерфейс опущен, если SQLite собран с опцией
SQLITE_OMIT_DESERIALIZE.
Choose any three.
SQLite C Interface
Десериализуйте базу данных
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 bytes in the deserialization */
sqlite3_int64 szBuf, /* Total size of buffer pData[] */
unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
);