int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
此函数用于将数据从调用方提供的缓冲区写入打开的 BLOB 处理程序。从缓冲区 Z 中复制 N 字节数据到打开的 BLOB 中,从偏移量 iOffset 开始。
成功时,sqlite3_blob_write() 返回 SQLITE_OK。否则,将返回一个 错误代码 或一个 扩展错误代码。除非返回 SQLITE_MISUSE,否则此函数将设置 数据库连接 错误代码和消息,可通过 sqlite3_errcode() 和 sqlite3_errmsg() 以及相关函数访问。
如果作为第一个参数传递的 BLOB 处理程序 未打开用于写入(sqlite3_blob_open() 的 flags 参数为零),则此函数将返回 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() 创建的 BLOB 处理程序,并且该处理程序尚未通过 sqlite3_blob_close() 关闭。将任何其他指针传递到此例程会导致未定义的行为,可能是不希望的行为。
另请参阅:sqlite3_blob_read()。