Это сообщение немного устарело, но я столкнулся с тем же вопросом. Я использовал описанный выше метод, и он не совсем сработал для моего случая, когда я пытался взять вектор и использовать его для потока. Что я делал, так это брал 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
.
Надеюсь, это поможет кому-то и сэкономит им время.