Mysql
 sql >> Database >  >> RDS >> Mysql

Come impostare dati binari usando setBlob() nel connettore C++

Questo post è un po' vecchio, ma mi sono imbattuto nella stessa domanda. Ho utilizzato il metodo sopra e non ha funzionato bene per il mio caso, che stava cercando di prendere un vettore e usarlo per il flusso. Quello che stavo facendo era prendere un UUID e convertirlo in una versione binaria a 16 byte da usare nella tabella. Usando il metodo sopra, ho scoperto che solo metà del mio buffer veniva popolata.

Ho finito per usare un 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);

Alcune altre cose da tenere a mente. Non si accede allo stream fino a quando uno dei execute si chiama varianti. Quindi dovrai mantenere lo stream attivo finché non avrai eseguito execute .

Si spera che questo possa aiutare qualcuno e fargli risparmiare tempo.