我必须使用 MySQL Connector/C++ 读取存储在 blob 字段中的一些图像。以下代码效果很好
std::istream *blobIn;
char buffer[6750];
memset(buffer, '\0', 6750);
blobIn = res->getBlob("att");
blobIn->read((char*)buffer,6750);
std::ofstream outfile ("foto.jpeg",std::ofstream::binary);
outfile.write (buffer,6750);
outfile.close();
我知道图像的大小不能大于 6750,但我想知道当前的字节大小并执行以下操作:
std::istream *blobIn;
char* buffer;
int size = getByteSizeFromBlob();
buffer = new char[size];
blobIn = res->getBlob("att");
blobIn->read((char*)buffer,size);
....
delete buffer;
网上有人建议使用这个功能
SELECT OCTET_LENGTH('att') FROM table
或者
SELECT LENGTH('att') FROM table
问题是这个查询总是返回 3 作为结果,而 blob 返回,例如 6110 字节。使用 MySQL Workbench,如果我选择“在编辑器中打开值”,我可以看到正确的字节大小,那么如何在 C++ 中检索相应的大小?