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 句柄将任何其他指针传递给此例程会导致未定义且可能不受欢迎的行为。

另见:sqlite3_blob_read()

另请参阅 对象常量函数的列表。