Write Data Into A BLOB Incrementally
Write Data Into A BLOB Incrementally
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句柄没有打开写入(flag参数为sqlite3_blob_open()为零),则此函数返回SQLITE_READONLY。
这个函数只能修改BLOB的内容; 使用此API无法增加BLOB的大小。如果偏移量iOffset小于BLOB末尾的N个字节,则返回SQLITE_ERROR并且不写入数据。BLOB的大小(以及因此N + iOffset的最大值)可以使用sqlite3_blob_bytes()接口确定。如果N或iOffset小于零,则返回SQLITE_ERROR并且不写入数据。
尝试写入到期的BLOB句柄失败,错误代码为SQLITE_ABORT。写入发生在BLOB句柄过期之前的BLOB不会在句柄到期时回滚,当然这些更改可能已被BLOB句柄过期的语句或其他独立语句覆盖。
此例程仅适用于通过先前成功调用sqlite3_blob_open()创建且尚未由sqlite3_blob_close()关闭的BLOB句柄。将任何其他指针传递给此例程会导致未定义且可能不合意的行为。
SQLite is in the Public Domain.