我把它当作字符串取出来,然后写不行啊,数据会丢失,我是这样写的:
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());

请问我该怎么取二进制数啊??

解决方案 »

  1.   

    var = pRs->GetCollect((_variant_t)_T("data"));
    为什么要强制转换类型读取呢?我没做过二进制的
    字符和数据(比如long型),都是直接var=pRs->GetCollect("data");
    只不过var是自己需要的类型而已
    当data是字符,就是_variant_t var;
    是long型,就是LONG var;
    是二进制,那或许也只要这样吧
    你可以试试
      

  2.   

    bstr=(BSTR)v3.pbstrVal;
    关于数据的类型转换你看看
    http://dev.csdn.net/develop/article/12/12365.shtm
      

  3.   

    数据保存在m_lpData
               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;
               }