2013-06-26 79 views
0

我必須使用MySQL Connector/C++讀取存儲在blob字段中的一些圖像。下面的代碼的偉大工程獲取存儲在blob中的MySQL圖像大小

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++中檢索相應的大小?

回答

0

正確的語法應該是;

SELECT OCTET_LENGTH(att) FROM table 

你選擇你的版本與所引用的字段名單什麼是字符串「ATT」,這顯然是永遠3 :)

的字節長度