现在的位置: 首页 > 综合 > 正文

ado读取二进制文件

2013年08月25日 ⁄ 综合 ⁄ 共 958字 ⁄ 字号 评论关闭

ADO为这些BLOB字段提供了两种方法GetChunkAppendChunk,通过它们,你可以象读写文件一样,把其它文件的内容写进去读出来。

 

 

 

   ///////////////////签名证书数据入库////////////////////////////////////////

   

        memset(pBuf,0,2000);

        memcpy(pBuf,stCert.CertSign,stCert.CertSignLen);

       

        VARIANT varBLOB;

        SAFEARRAY *psa;

        SAFEARRAYBOUND rgsabound[1];

 

        if(pBuf)

        {

            rgsabound[0].cElements = stCert.CertSignLen;

 

            psa = SafeArrayCreate(VT_UI1, 1, rgsabound); ///创建SAFEARRAY对象

 

            for (long i = 0; i < (long)(stCert.CertSignLen); i++)

 

                SafeArrayPutElement (psa, &i, pBuf+i); ///将pBuf指向的二进制数据保存到SAFEARRAY对象psa中

 

            varBLOB.vt = VT_ARRAY | VT_UI1;///将varBLOB的类型设置为BYTE类型的数组

 

            varBLOB.parray = psa; ///为varBLOB变量赋值

            pRecordset->Fields->GetItem("CertSign")->AppendChunk(varBLOB);

        }

        pRecordset->Update();

        HRESULT H=pRecordset->Close();

    }

    catch (_com_error &e)

    {

        ShowError(e,"AddCertToDB");

        return FALSE;

    }

    return TRUE;

}

 

抱歉!评论已关闭.