Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment définir des données binaires à l'aide de setBlob() dans le connecteur C++

Ce post date un peu, mais je suis tombé sur la même question. J'ai utilisé la méthode ci-dessus et cela n'a pas tout à fait fonctionné pour mon cas, qui essayait de prendre un vecteur et de l'utiliser pour le flux. Ce que je faisais consistait à prendre un UUID et à le convertir en une version binaire de 16 octets à utiliser dans le tableau. En utilisant la méthode ci-dessus, j'ai constaté que seule la moitié de mon tampon était remplie.

J'ai fini par utiliser 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);

Quelques autres choses à garder à l'esprit. Le flux n'est pas accessible jusqu'à ce que l'un des execute variantes est appelée. Vous devrez donc conserver le flux jusqu'à ce que vous ayez exécuté execute .

J'espère que cela aidera quelqu'un et lui fera gagner du temps.