Tento příspěvek je trochu starý, ale narazil jsem na stejnou otázku. Použil jsem výše uvedenou metodu a v mém případě to nefungovalo správně, když jsem se snažil vzít vektor a použít jej pro stream. To, co jsem dělal, bylo vzít UUID a převést ho na 16bajtovou binární verzi pro použití v tabulce. Pomocí výše uvedené metody jsem zjistil, že se zaplňuje pouze polovina mé vyrovnávací paměti.
Nakonec jsem použil stringstream
.
std::vector<unsigned char> convertedId;
std::stringstream stream;
// convertedId has been populated with the 16 byte binary version
stream = std::stringstream(std::string(convertedId.begin(), convertedId.end()));
// Parameter 1 is BINARY(16)
pStatement->setBlob(1, &stream);
Několik dalších věcí, které je třeba mít na paměti. Ke streamu se přistoupí až po jednom z execute
se nazývá varianty. Takže budete muset nechat stream, dokud nespustíte execute
.
Snad to někomu pomůže a ušetří čas.