用C ++表示BLOB

时间:2012-05-20 10:18:03

标签: c++ stl blob

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

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

datastd::string被绑定为_insert_statement的第三个参数。)