Запись данных в 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, не отменяются истечением срока действия дескриптора, хотя, конечно, эти изменения могут быть перезаписаны оператором, истекшим дескриптор BLOB, или другими независимыми операторами.
Эта процедура работает только с дескриптором BLOB, созданным ранее успешной вызовом sqlite3_blob_open() и не закрытым с помощью sqlite3_blob_close(). Передача любого другого указателя в эту процедуру приводит к неопределенному и, вероятно, нежелательному поведению.
См. также: sqlite3_blob_read().
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/blob_write.html