ADO为这些BLOB字段提供了两种方法GetChunk和AppendChunk,通过它们,你可以象读写文件一样,把其它文件的内容写进去读出来。
///////////////////签名证书数据入库////////////////////////////////////////
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;
}