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大小,然後接收更多的數據?
聽起來似乎合理,謝謝。但我仍然有一些希望,有人對此限制採取瞭解決方法。 –