SQLite C 接口
将数据增量写入 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 的内容;无法使用此 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 句柄。将任何其他指针传递给此例程会导致未定义且可能不受欢迎的行为。