RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Запись данных в BLOB

int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);

Эта функция используется, чтобы написать данные в открытый BLOB из буфера. N байт данных копируются из буфера Z в открытый BLOB, начиная со смещения iOffset.

При успехе sqlite3_blob_write() вернет SQLITE_OK. Иначе она вернет код ошибки или расширенный код ошибки. Если SQLITE_MISUSE не возвращен, эта функция устанавливает код ошибки соединения с базой данных и сообщение, доступное через sqlite3_errcode() и sqlite3_errmsg().

Если обработчик BLOB, переданный как первый аргумент, не был открыт для записи (параметр флагов sqlite3_blob_open() был нолем), эта функция возвращает SQLITE_READONLY.

Эта функция может только изменить содержание BLOB, невозможно увеличить размер BLOB, используя этот API. Если iOffset меньше N байт от конца BLOB, SQLITE_ERROR возвращен, и никакие данные не написаны. Размер BLOB (и следовательно максимальное значение N+iOffset) может быть определен, используя интерфейс sqlite3_blob_bytes(). Если N или iOffset меньше нуля, возвращается SQLITE_ERROR и никакие данные не написаны.

Попытка написать обработчик BLOB с истекшим сроком терпит неудачу с кодом ошибки SQLITE_ABORT. Записи BLOB, которые произошли перед истекшим сроком не отменены, хотя, конечно, те изменения, возможно, были переписаны запросом.

Это работает только с BLOB, созданными sqlite3_blob_open() и не закрытыми sqlite3_blob_close(). Передача любого другого указателя приводит к неопределенному и вероятно нежелательному поведению.

См. также: sqlite3_blob_read().