SAFEARRAY 读取数据的问题
数据库中存放图片的字段,读出来后 放到VARIANT 结构体 现在的问题是 我不知道该如何读出 SAFEARRAY 中的数据
还有数组大小
我用 //SafeArrayGetLBound(varBLOB.parray,1,&LBound);
//SafeArrayGetUBound(varBLOB.parray,1,&UBound);
获取出来的上界和下界都是几百万的值 肯定不对吧
贴点代码 大家帮帮忙 找了好多资料 搞不定 只能依靠大家了
VARIANT varBLOB;
varBLOB = m_pRecordset->GetCollect("PersonJob");
LONG lDataLength = m_pRecordset->GetFields()->GetItem("PersonPhoto")->ActualSize;
if(varBLOB.vt == (VT_ARRAY | VT_UI1) && varBLOB.vt!= VT_NULL)
{
SAFEARRAY* buf = NULL;
long LBound;
long UBound;
SafeArrayAccessData(varBLOB.parray,(void **)&buf);
//SafeArrayGetLBound(varBLOB.parray,1,&LBound);
//SafeArrayGetUBound(varBLOB.parray,1,&UBound);
//CString str;
//str.Format(_T("LBound = %l ;UBound = %l; cbElements = %l"),LBound,UBound,varBLOB.parray->rgsabound[0].cElements);
//AfxMessageBox(str);
memset(&tmpPersonInfo.PhotoBuf[0],0,MAX_IMAGE_LENGTH);
for(LONG i = 0; i<lDataLength ;i++)
SafeArrayGetElement(varBLOB.parray,&i,&tmpPersonInfo.PhotoBuf[i]);
SafeArrayUnaccessData(varBLOB.parray);
}