是否有任何STL容器似乎非常适合用作数据库软件的BLOB?我会想vector<char>
,但还有更好的东西吗?也许是std::string
?还是一些非STL容器?
答案 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);
(data
是std::string
被绑定为_insert_statement
的第三个参数。)