VC + ADO + SQL BLOB 读取/存储内容不一致
为什么存储与读取的内容不一致?
读取的内容最后多了点东西。
// 存储入数据库
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = strValue.GetLength();
psa = SafeArrayCreate(VT_UI1, 1,rgsabound);
int nLen = strValue.GetLength();
for( int i=0; i<nLen; i++ )
SafeArrayPutElement(psa,(long *)&i, (void *)(LPCTSTR)strValue.Mid(i,1));
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
pRs->GetFields()->GetItem("SignData")->AppendChunk(varBLOB);
pRs->Update();
SQL VC 数据库
if( pRs->Open(_variant_t(strSQL),varCon,adOpenStatic,adLockOptimistic,adCmdText) )
{
AfxMessageBox("查询失败!");
return;
}
if( pRs->GetRecordCount() > 0 )
{
// 得到数据的长度
long lDataSize = pRs->GetFields()->GetItem("SignData")->ActualSize;
if( lDataSize > 0 )
{
_variant_t varBLOB = pRs->GetFields()->GetItem("SignData")->GetChunk(lDataSize);
if( varBLOB.vt == ( VT_ARRAY | VT_UI1 ) )
{
char *pBuff = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuff);
FILE *pFile = fopen("C:\\6038.txt","w+");
if( pFile != NULL )
{
fputs(pBuff,pFile);
fclose(pFile);
}
SafeArrayUnaccessData(varBLOB.parray);
}
}
}
pRs->Close();