我把它当作字符串取出来,然后写不行啊,数据会丢失,我是这样写的:
var = pRs->GetCollect((_variant_t)_T("data"));
BYTE *pData = new BYTE[100];
bstr=(var.vt!=VT_NULL) ? var:"";
cTemp = (char *)bstr;
memcpy(pData,cTemp,cTemp.GetLength());
请问我该怎么取二进制数啊??
var = pRs->GetCollect((_variant_t)_T("data"));
BYTE *pData = new BYTE[100];
bstr=(var.vt!=VT_NULL) ? var:"";
cTemp = (char *)bstr;
memcpy(pData,cTemp,cTemp.GetLength());
请问我该怎么取二进制数啊??
为什么要强制转换类型读取呢?我没做过二进制的
字符和数据(比如long型),都是直接var=pRs->GetCollect("data");
只不过var是自己需要的类型而已
当data是字符,就是_variant_t var;
是long型,就是LONG var;
是二进制,那或许也只要这样吧
你可以试试
关于数据的类型转换你看看
http://dev.csdn.net/develop/article/12/12365.shtm
vValue = m_pRecordset->Fields->GetItem(vSegIndex)->Value;
// 读取数据大小
nDataSize = m_pRecordset->GetFields()->GetItem(vSegIndex)->ActualSize;
nDataType = vValue.vt; if (nDataType == (VT_ARRAY | VT_UI1))
{
m_lpData = new char[nDataSize];
memset(m_lpData, 0, nDataSize);
char* pBufTemp = NULL;
SafeArrayAccessData(vValue.parray, (void **)&pBufTemp);
for (int i = 0; i < nDataSize; i++)
*(((char*)m_lpData)+i) = *(pBufTemp+i);
SafeArrayUnaccessData (vValue.parray);
return TRUE;
}