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

时间:2013-06-26 10:26:04

标签: 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 ++中检索相应的大小?

1 个答案:

答案 0 :(得分:0)

正确的语法应该是;

SELECT OCTET_LENGTH(att) FROM table

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