如题,谢谢!
例如:
select b_picture,n_picturebytes from abc

解决方案 »

  1.   

    可能是你读取BLOB字段的代码有问题
    ADO读写BLOB字段的代码
    读取数据// 读取数据
    vValue = m_pRecordset->Fields->GetItem(bstrSegName)->Value;
    // 读取数据大小
    nDataSize = m_pRecordset->GetFields()->GetItem(bstrSegName)->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);
              }
    存入数据
    BOOL SaveBLOB(CString strSegName, UINT& nDataSize, char* pBuf)
    {
    _bstr_tbstrSegName = strSegName;
    VARIANTvarBLOB;
    SAFEARRAY*psa;
    SAFEARRAYBOUNDrgsabound[1];
    // 保存BLOB数据
    if(nDataSize > 0)
    {
    rgsabound[0].lLbound = 0;
    rgsabound[0].cElements = nDataSize;
    psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
    for (long i = 0; i < (long)nDataSize; i++)
      SafeArrayPutElement (psa, &i, pBuf+i);
    varBLOB.vt = VT_ARRAY | VT_UI1;
    varBLOB.parray = psa;
    m_pRecordset->GetFields()->GetItem(bstrSegName)->AppendChunk(varBLOB);

    m_pRecordset->Update();
    return TRUE;
    }
      

  2.   

    是这样的,我准备先查询,然后再用方法读,结果发现执行查询SQL语句都没通过.不知怎么回事?
    是不是类型不支持呢?
      

  3.   

    这个问题很怪,在PLSQL Developer下试验SQL语句都没问题,结果在程序里不行,是不是驱动有问题呢? 不知哪位遇到过这种情况,谢谢赐教.// 创建记录集
      CADORecordset* pRs = new CADORecordset(g_DB.m_pDB);
    strSql = "select b_picture,n_picturebytes from tb_trainfaultdetail where to_char(d_passtime,'yyyy-mm-dd hh24:mi:ss')='" + faultinfo.strPassTime + "' and to_char(d_affirmtime,'yyyy-mm-dd hh24:mi:ss')='" + 
    faultinfo.strSendTime + "' and s_faultorder='" + faultinfo.strFaultNO + "'"; TRACE(strSql + "\n");
    if (pRs->Open((LPCTSTR)strSql))
    {
    if (!pRs->IsEOF())
    {
    pRs->MoveFirst();
    pRs->Edit();
    CFile infile;
    infile.Open(".\\debug\\cache\\fault\\fault.jpg",CFile::modeRead|CFile::typeBinary);
    int nSize = infile.GetLength();
    BYTE *pBuf = new BYTE[nSize ];
    infile.Read(pBuf,nSize);
    pRs->AppendChunk("b_picture",pBuf,nSize);
    pRs->SetFieldValue("n_picturebytes",nSize);
    pRs->Update();
    delete []pBuf;
    }
    }

    // 关闭记录集,释放空间
    pRs->Close();
    delete pRs;出现的错误提示如下:
    First-chance exception in TFDSClient.exe (MSDASQL.DLL): 0xC0000005: Access Violation.
    Loaded 'C:\Program Files\Common Files\System\ado\msader15.dll', no matching symbolic information found.
    First-chance exception in TFDSClient.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception.