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..:)