将未知大小的大blob写入SQLite
我正在实现一个流接口,它从流(例如HTTP下载ord Android content://share)获取二进制数据,并将其存储到SQLite blob中 有没有一种方法可以使用将未知大小的大blob写入SQLite,sqlite,Sqlite,我正在实现一个流接口,它从流(例如HTTP下载ord Android content://share)获取二进制数据,并将其存储到SQLite blob中 有没有一种方法可以使用sqlite3\u blob\u open和sqlite3\u blob\u write接口,而不必事先知道终端大小 sqlite3\u blob\u open声明: 使用sqlite3_blob_bytes()接口确定打开的blob的大小。此接口不能更改blob的大小。使用updatesql命令更改blob的大小 我
sqlite3\u blob\u open
和sqlite3\u blob\u write
接口,而不必事先知道终端大小
sqlite3\u blob\u open
声明:
使用sqlite3_blob_bytes()接口确定打开的blob的大小。此接口不能更改blob的大小。使用updatesql命令更改blob的大小
我当前的代码如下所示。设置初始大小(1): 获取blob句柄(2),这是围绕
sqlite3\u blob\u open的包装:
auto blob = session_->openBlob("main", "attachments_content",
"content", rowid,
SmartSqlite::Blob::READWRITE);
写一段数据(3):
鉴于blob
对象无法调整blob的大小,是否有其他方法可以增量增加blob大小,然后接收更多数据?修改blob的方法只有三种:
- 使用SQL语句,或
- 要使用无法调整blob大小的
sqlite3\u blob_*()
接口,或
- 直接修改
由于SQLite的原因,更改blob的大小可能需要重写整行。因此,你想要的东西不能有效地完成
<>我会考虑把这个流写成一个临时文件,然后处理它。听起来似乎是合理的,谢谢。但我仍有一些希望,希望有人能解决这一限制。
auto blob = session_->openBlob("main", "attachments_content",
"content", rowid,
SmartSqlite::Blob::READWRITE);
blob.write(data.data(), data.size(),
progress.bytesProcessed /* offset */);