Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como definir dados binários usando setBlob() no conector C++


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.