4

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

4

3 回答 3

9

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

于 2012-05-20T10:25:43.513 回答
2

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

编写stream您自己的实现并像使用其他任何stream.

于 2012-05-20T10:25:12.720 回答
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。)

于 2012-05-20T15:24:08.773 回答