Как использовать MySQL C ++ Connector для хранения двоичных данных?

0

У меня есть блок двоичных данных, определенный как:

void * address, size_t binarySize;

который я хочу сохранить в базе данных MySQL, используя MySQL С++ Connector.

Функция setBlob() принимает istream.

Вопрос:

Как я могу преобразовать из необработанного void * address, size_t binarySize в объект istream или istringstream? Можно ли это сделать без "копирования" данных? то есть указать istream указатель и размер, чтобы он мог указать на него.

Теги:
mysql-connector
istream

1 ответ

4
Лучший ответ

Вы должны подклассифицировать 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().

С уважением, Элрохир

  • 0
    офигенный ответ! благодарю вас!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню