4,011
社区成员
发帖
与我相关
我的任务
分享
UINT GetBlobData(_RecordsetPtr m_pRs, LPCTSTR lpField, LPVOID lpBuff)
{
UINT dwSize = m_pRs->Fields->Item[lpField]->ActualSize;
if (dwSize > 0)
{
LPBYTE pBuff = (LPBYTE)lpBuff;
ULONG uOffset=0;
_variant_t varChunk;
while(uOffset < dwSize)
{
varChunk = m_pRs->Fields->Item[lpField]->GetChunk(dwChunkSize);
LONG dwRead = varChunk.parray->rgsabound[0].cElements;
MoveMemory(pBuff, varChunk.parray->pvData, dwRead);
pBuff += dwRead;
uOffset += dwRead;
}
return dwSize;
}
else
{
return 0;
}
}
LPBYTE GetBlobData(_RecordsetPtr m_pRs, LPCTSTR lpField, DWORD& dwSize)
{
dwSize = m_pRs->Fields->Item[lpField]->ActualSize;
if (dwSize > 0)
{
LPBYTE pBuff = (LPBYTE)GlobalAlloc(GPTR, dwSize);
if (pBuff != NULL)
{
LPBYTE lpData = pBuff;
ULONG uOffset=0;
_variant_t varChunk;
while(uOffset < dwSize)
{
varChunk = m_pRs->Fields->Item[lpField]->GetChunk(dwChunkSize);
LONG dwRead = varChunk.parray->rgsabound[0].cElements;
MoveMemory(pBuff, varChunk.parray->pvData, dwRead);
pBuff += dwRead;
uOffset += dwRead;
}
return lpData;
}
}
return NULL;
}