![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
sqlite3_serialize(D,S,P,F) возвращает указатель на память, которая
является преобразованием в последовательную форму базы данных S по
соединению с базой данных D. Если P не NULL,
то размер базы данных в байтах вписывают в *P. Для обычного файла базы данных на диске преобразование в последовательную
форму это просто копия дискового файла. Для базы данных в памяти или базы
данных "TEMP", преобразование в последовательную форму это та же самая
последовательность байтов, которые были бы написаны на диск, если бы эту базу
на него сохранили. Обычный случай, что sqlite3_serialize()
копирует преобразование в последовательную форму базы данных в память,
полученную из sqlite3_malloc64(),
и возвращает указатель на ту память. Вызывающий ответственен за освобождение
возвращенного значения, чтобы избежать утечки памяти. Однако, если аргумент F
содержит бит SQLITE_SERIALIZE_NOCOPY, то никакие выделения памяти не сделаны,
и sqlite3_serialize() возвратит указатель на смежное представление памяти
базы данных, которую SQLite в настоящее время использует для той базы данных
или NULL, если никакое такое смежное представление памяти базы данных не
существует. Смежное представление памяти базы данных обычно будет
существовать только, если был предшествующий запрос
sqlite3_deserialize(D,S,...)
с теми же самыми D и S. Размер базы данных вписывают в *P, даже если бит
SQLITE_SERIALIZE_NOCOPY установлен, но никакая смежная копия базы
данных не существует. После вызова, если бит SQLITE_SERIALIZE_NOCOPY установлен,
возвращенное содержимое буфера останется доступным и неизменным до следующей
операции записи на связи или пока связь будет закрыта, запросы
не должны изменять буфер. Если бит был сброшен,
к возвращенному буферу не получит доступ SQLite после вызова. Вызов sqlite3_serialize(D,S,P,F) вернет NULL, даже если бы бит
SQLITE_SERIALIZE_NOCOPY опущен в аргументе F, если ошибка
распределения памяти происходит. Этот интерфейс опущен, если SQLite собран с выбором
SQLITE_OMIT_DESERIALIZE.
Choose any three.
SQLite C Interface
Преобразуйте в последовательную форму базу данных
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 */
);