Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách đặt dữ liệu nhị phân bằng setBlob () trong trình kết nối C ++

Bài đăng này hơi cũ, nhưng tôi đã gặp câu hỏi tương tự. Tôi đã sử dụng phương pháp ở trên và nó không hoàn toàn phù hợp với trường hợp của tôi, đó là cố gắng lấy một vectơ và sử dụng nó cho luồng. Những gì tôi đang làm là lấy một UUID và chuyển đổi nó thành một phiên bản nhị phân 16 byte để sử dụng trong bảng. Bằng cách sử dụng phương pháp trên, tôi thấy rằng chỉ một nửa bộ đệm của tôi đang được điền.

Tôi đã kết thúc bằng cách sử dụng 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);

Một số điều khác cần ghi nhớ. Luồng không được truy cập cho đến khi một trong các execute các biến thể được gọi. Vì vậy, bạn sẽ cần phải duy trì luồng cho đến khi bạn chạy execute .

Hy vọng rằng điều này sẽ giúp ích cho ai đó và tiết kiệm thời gian cho họ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chọn * từ hai bảng có số cột khác nhau

  2. Sự cố với RODBC sqlSave

  3. Trả về cả kết quả truy vấn và số hàng

  4. Giao diện cơ sở dữ liệu GUI MySQL

  5. MySQL:DUY NHẤT, nhưng KHÔNG ĐỦ - được phép bằng cách tạo bảng. Nhiều hơn 1 NULL được phép chèn. Tại sao?