2
我正在实现一个流接口,它从流中获取二进制数据(例如HTTP下载或Android内容://共享)并将其存储到SQLite blob中。将大块未知大小写入SQLite
有没有办法在事先不知道最终大小的情况下使用sqlite3_blob_open
和sqlite3_blob_write
接口?
sqlite3_blob_open
指出:
使用sqlite3_blob_bytes()接口来确定开斑的大小。这个接口不能改变blob的大小。使用UPDATE SQL命令更改blob的大小。
我当前的代码看起来是这样的。设定的初始大小(1):
// set size of attachment
{
auto stmt = session_->prepare(
"UPDATE attachments_content "
"SET content = zeroblob(:size) "
"WHERE rowid = :rowid");
stmt.bind(":size", size_);
stmt.bind(":rowid", rowid);
stmt.execWithoutResult();
}
获取团块手柄(2),这是围绕sqlite3_blob_open
的包装:
auto blob = session_->openBlob("main", "attachments_content",
"content", rowid,
SmartSqlite::Blob::READWRITE);
写数据片(3):
blob.write(data.data(), data.size(),
progress.bytesProcessed /* offset */);
鉴于blob
对象无法调整blob的大小,是否有任何其他方式增量增加blob大小,然后接收更多的数据?
听起来似乎合理,谢谢。但我仍然有一些希望,有人对此限制采取了解决方法。 –