sql >> Databasteknik >  >> RDS >> Mysql

Hur man ställer in binära data med setBlob() i C++-kontakten

Det här inlägget är lite gammalt, men jag stötte på samma fråga. Jag använde metoden ovan och den fungerade inte riktigt för mitt fall, som försökte ta en vektor och använda den för strömmen. Det jag gjorde var att ta ett UUID och konvertera det till en 16 byte binär version att använda i tabellen. Med metoden ovan upptäckte jag att bara halva min buffert fylldes på.

Det slutade med att jag använde en 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);

Några andra saker att tänka på. Strömmen nås inte förrän en av execute varianter kallas. Så du måste behålla strömmen tills du har kört execute .

Förhoppningsvis kommer detta att hjälpa någon och spara tid.



  1. Kontrollera om en icke-LOB-kolumn behöver uppdateras

  2. psql-klienten kan vara ett schackbräde nu...

  3. Överbrygga Azure-gapet:Hanterade instanser

  4. Tabellnamn som parameter med PDO/MySQL-förberedd sats