【问题标题】:How do I use MySQL C++ Connector for storing binary data?如何使用 MySQL C++ 连接器存储二进制数据?
【发布时间】:2009-07-01 20:12:43
【问题描述】:

我有一个二进制数据块定义为:

void* 地址,size_t binarySize;

我想使用 MySQL C++ 连接器存储到 MySQL 数据库。

函数 setBlob() 接受 istream。

问题:

如何将原始 void* 地址 size_t binarySize 转换为 istream 对象或 istringstream?是否可以在不“复制”数据的情况下做到这一点?即告诉 istream 指针和大小,以便它可以指向它。

【问题讨论】:

    标签: c++ mysql mysql-connector istream


    【解决方案1】:

    你必须继承 streambuf 例如像这样:

    class DataBuf : public streambuf
    {
    public:
       DataBuf(char * d, size_t s) {
          setg(d, d, d + s);
       }
    };
    

    然后您可以实例化一个 istream 对象,该对象使用 DataBuf 作为缓冲区,该缓冲区本身使用您的二进制数据块。假设 binarySize 以字节为单位指定二进制数据的大小(sizeof(char) 应该是一个字节),您可以这样做:

    DataBuf buffer((char*)address, binarySize);
    istream stream(&buffer);
    

    您现在可以将 istream 对象传递给 setBlob()。

    问候, 埃罗希尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-22
      • 2010-11-09
      • 2010-11-09
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2012-02-21
      相关资源
      最近更新 更多