表示C++中的 BLOB

representing BLOBs in C++

本文关键字:BLOB 中的 C++ 表示      更新时间:2023-10-16

是否有任何STL容器似乎非常适合用作数据库软件的BLOB?我会认为vector<char>,但还有更好的东西吗?也许是std::string?还是一些非 STL 容器?

BLOB类型的数据库允许存储二进制数据,因此您需要字节的有序集合。 最简单的选择是vector<>,您可以选择unsigned char来表示大多数平台上的字节

我们在其中一个项目中使用了stream来表示存储在数据库中的 BLOB/CLOB 值。我认为这在大多数情况下是最好的方法,因为根据定义,BLOB/CLOB 可能非常大,可以放入内存中。

编写自己的stream实现,并像任何其他stream一样使用它。

我目前正在使用std::string来存储blob,因为我正在使用Google的Protocol Buffers库进行对象序列化,这就是他们使用的(例如,MessageLite::SerializeToString(。它非常适合我的目的,因为将生成的字符串作为 blob 插入到 SQLite 数据库中非常简单:

sqlite3_bind_blob(_insert_statement, 3, data.c_str(), data.size(), SQLITE_STATIC);

(data是一个std::string被绑定为_insert_statement的第三个参数。