Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So setzen Sie Binärdaten mit setBlob() im C++-Connector

Dieser Beitrag ist schon etwas älter, aber ich bin auf die gleiche Frage gestoßen. Ich habe die obige Methode angewendet und sie hat in meinem Fall nicht ganz funktioniert, in dem versucht wurde, einen Vektor zu nehmen und diesen für den Stream zu verwenden. Was ich tat, war, eine UUID zu nehmen und sie in eine 16-Byte-Binärversion zu konvertieren, um sie in der Tabelle zu verwenden. Mit der obigen Methode habe ich festgestellt, dass nur die Hälfte meines Puffers gefüllt war.

Am Ende habe ich einen stringstream verwendet .

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);

Ein paar andere Dinge zu beachten. Auf den Stream wird erst zugegriffen, wenn einer der execute Varianten heißt. Sie müssen also den Stream aufrechterhalten, bis Sie execute ausgeführt haben .

Hoffentlich hilft dies jemandem und spart ihm Zeit.