c ++ Mysql在数据库中保存二进制blob

时间:2013-05-17 20:27:05

标签: c++ mysql mysql-connector

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

typedef unsigned char byte;

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

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

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

Thanx阅读。

1 个答案:

答案 0 :(得分: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 .. :))