如何使用MySQL C ++ Connector存储二进制数据?

时间:2009-07-01 20:12:43

标签: c++ mysql mysql-connector istream

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

void * address,size_t binarySize;

我想使用MySQL C ++ Connector存储到MySQL数据库。

函数setBlob()采用istream。

问题:

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

你现在可以传递给setBlob()的那个istream对象。

此致 伊罗何