首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Write Data Into A BLOB Incrementally

代码语言:javascript
复制
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句柄。将任何其他指针传递给此例程会导致未定义且可能不合意的行为。

代码语言:txt
复制
 SQLite is in the Public Domain.

扫码关注腾讯云开发者

领取腾讯云代金券