0

所以我在 ubuntu 64 位机器上使用 g++ 和 Mysqlcppconn(Mysql c++ 连接器)。我想将二进制数据 blob 插入数据库并能够检索它。检索

typedef unsigned char byte;

byte data[512];
istream *buf=res->getBlob(1);
buf->read((char*)data,512);

我只是希望这可行,但我不太确定。这里 res 是一个 ResultSet。

为了存储在数据库中,我无法弄清楚如何将我的 byte* 转换为 istream。

感谢阅读。

4

1 回答 1

0

答案在于使用流缓冲区将blob写入数据库

struct membuf: std::streambuf
{
    membuf(char* b, char* e) { this->setg(b, b, e); }
};

byte *p = something....;
membuf buf((char*)p,(char*)p+ALPHABET_SIZE*sizeof(ull));
istream is(&buf);

ps->setBlob(1,&is);

这里 ps 是一个 PreparedStatement .. :)

于 2013-05-17T20:45:52.040 回答