c++ - 获取存储在 blob 中的 MySQL 图像大小

标签 c++ mysql size blob mysql-connector

我必须使用 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++ 中检索相应的大小?

最佳答案

正确的语法应该是;

SELECT OCTET_LENGTH(att) FROM table

您在版本中选择的字段名称单引号是字符串“att”的字节长度,显然始终为 3 :)

关于c++ - 获取存储在 blob 中的 MySQL 图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17317550/

相关文章:

c++ - 了解 C++ 中函数的值类别

c++ - Qt缓冲区欠载播放RAW音频

sql - 数据库错误 : Duplicate Entry

MySQL:#126 - 表的 key 文件不正确

php - 从处理程序获取图像大小

c++ - 取消选择单选按钮

php显示mysql表中没有列名的所有行数据

c++ - 如何使用 C++ 获取文件的实际大小?

arrays - 如何知道 Fortran 数组中非零元素的个数?

c++ - 实例化后模板的特化?