_RecordsetPtr读取BLOB字段值,字段大小ActualSize返回0x00000004
本帖最后由 studyRTX 于 2013-01-06 13:24:23 编辑 m_pRecordset.CreateInstance("ADODB.Recordset");
HRESULT hr = m_pRecordset->Open("SELECT * FROM 表名",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
long lDataSize = m_pRecordset->GetFields()->GetItem(BLOB字段名)->ActualSize;
用的是MySQL数据库。当读取数据库的图片,上句的lDataSize变量值是4,得不到BLOB字段中的二进制数据。若表中都是小尺寸的bmp图片则正常得到lDataSize的大小。
总之,是小容量的图片就可以正确得到lDataSize的值;表中有一张大容量的图片,所有记录的BLOB字段读到的lDataSize=4。
MFC _RecordsetPtr MySql
[解决办法]
long lDataSize;
你看是不是溢出了,long是有符号的,取值范围少一半,你的图片字节是不是超过这个值了,如果是,你改成unsigned long
小容量的图片就可以正确得到lDataSize的值,说明ADO支持MYSQL的BLOB字段的.
不要用MYSQL的API函数,如果MYSQL升级后,你还得改程序,因为LINUX下的升级根本就不向下兼容