sqlite.h


Escribir datos de forma incremental en un BLOB

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

Esta función se usa para escribir datos en un manipulador BLOB abierto desde un buffer suministrado por la llamada. Se copian N bytes de datos desde el buffer Z dentro del BLOB abierto, empezando en el desplazamiento iOffset.

Si el manipulador BLOB pasado como primer argumento no fue abierto para escritura (el parámetro flags en la llamada a sqlite3_blob_open() era cero), esta función retorna con el valor SQLITE_READONLY.

Esta función sólo puede modificar el contenido del BLOB, no es posible incrementar el tamaño de un BLOB usando esta función. Si el desplazamiento iOffset es menor que N bytes desde el final del BLOB, se retornoa con SQLITE_ERROR y no se escribe ningún dato. Si N es menor que cero se devuelve SQLITE_ERROR y no se escribe ningún dato. El tamaño del BLOB (y por lo tanto el valor máximo para N+Offset) puede ser determinado usando la función sqlite3_blob_bytes().

Un intento de escribir en un manipulador BLOB muerto fallará con un código de error SQLITE_ABORT. Las escrituras en el BLOB previas a que el manipulador haya expirado no se deshacen por la muerte del manipulador, aunque por supuesto, esos cambios pueden ser sobrescritos por la sentencia que provocó la muerte del manipulador de BLOB o por otras sentencias independientes.

Si tiene éxito, sqlite3_blob_write() retorna SQLITE_OK. En caso contrario, se devuelve un código de error o un código de error extendido.

Esta función sólo funciona sobre manipuladores de BLOB que hayan sido creados por una llamada con éxito previa a sqlite3_blob_open() y que no hayan sido cerrados por sqlite3_blob_close(). Pasar cualquier otro puntero a esta función producirá comportamientos indefinidos y probablemente no deseados.

Ver también: sqlite3_blob_read().