Тази публикация е малко стара, но попаднах на същия въпрос. Използвах метода по-горе и той не работи точно за моя случай, който се опитваше да вземе вектор и да го използва за потока. Това, което правех, беше да взема UUID и да го преобразувам в 16 байтова двоична версия, за да използвам в таблицата. Използвайки метода по-горе, установих, че само половината ми буфер се попълва.
В крайна сметка използвах 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);
Няколко други неща, които трябва да имате предвид. До потока не се осъществява достъп до едно от execute
варианти се нарича. Така че ще трябва да поддържате потока, докато не изпълните execute
.
Надяваме се, че това ще помогне на някого и ще му спести време.