C++ Mysql сохранить двоичный двоичный объект в базе данных

Поэтому я использую g ++ и Mysqlcppconn (коннектор Mysql C++) на 64-битной машине с Ubuntu. Я хочу вставить двоичный двоичный объект данных в базу данных и быть в состоянии получить его. Retieval

typedef unsigned char byte;

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

Я просто надеюсь, что это работает, я не слишком уверен, хотя. Здесь res - ResultSet.

Для хранения в базе данных я не могу понять, как мне преобразовать мой байт * в istream.

Спасибо за чтение.

1 ответ

Решение

Ответ заключается в использовании потокового буфера для записи 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..:)

Другие вопросы по тегам