Este post é um pouco antigo, mas me deparei com a mesma pergunta. Eu empreguei o método acima e não funcionou bem para o meu caso, que estava tentando pegar um vetor e usá-lo para o fluxo. O que eu estava fazendo era pegar um UUID e convertê-lo em uma versão binária de 16 bytes para usar na tabela. Usando o método acima, descobri que apenas metade do meu buffer estava sendo preenchido.
Acabei usando um
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);
Algumas outras coisas para manter em mente. O fluxo não é acessado até que um dos
execute
variantes é chamado. Portanto, você precisará manter o fluxo até executar execute
. Espero que isso ajude alguém e economize tempo.