Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak ustawić dane binarne za pomocą setBlob() w konektorze C++

Ten post jest trochę stary, ale natknąłem się na to samo pytanie. Zastosowałem powyższą metodę i nie działała ona dobrze w moim przypadku, w którym próbowałem wziąć wektor i użyć go do strumienia. Wziąłem UUID i przekonwertowałem go na 16-bajtową wersję binarną do wykorzystania w tabeli. Stosując powyższą metodę, odkryłem, że tylko połowa mojego bufora była zapełniana.

Skończyło się na użyciu 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);

Kilka innych rzeczy, o których warto pamiętać. Dostęp do strumienia jest możliwy dopiero po jednym z execute warianty to tzw. Musisz więc utrzymywać strumień, dopóki nie uruchomisz execute .

Mam nadzieję, że to komuś pomoże i oszczędzi czas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana kolejności rekordów z frontendu

  2. MySQL 8 ignoruje długości całkowite

  3. MySQL, DELETE Query z dołączeniem

  4. Napraw „BŁĄD 1136 (21S01):Liczba kolumn nie odpowiada liczbie wartości w wierszu 1” podczas wstawiania danych do MySQL

  5. Uzyskiwanie dostępu do plików graficznych