最近我在将wav文件存入SQL的一个image字段之后,觉得无法知道存入的数据是否正确,所以读出来,结果读出来的数据完全不对。请问有没有什么方法能知道存入字段的数据是否正确呢?
读取代码如下:
pConnection->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SERVER";
hr = pConnection->Open("","","",adConnectUnspecified);
pRs->Open("select * from aa",_variant_t((IDispatch*)pConnection),
adOpenStatic,adLockOptimistic,adCmdText);
long lDataLength = pRs->Fields->GetItem("aa")->ActualSize;
varBLOB = pRs->Fields->GetItem("aa")->GetChunk(lDataLength);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pBuf = new BYTE[lDataLength];
SafeArrayAccessData(varBLOB.parray,(void **)pBuf);
CString strFileName = "d:\\temp.wav";
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
int len = sizeof(*pBuf);
outFile.Write(pBuf,lDataLength);
outFile.Close();
SafeArrayUnaccessData (varBLOB.parray);
delete []pBuf;
}
pRs->Close();
pConnection->Close();
读取代码如下:
pConnection->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SERVER";
hr = pConnection->Open("","","",adConnectUnspecified);
pRs->Open("select * from aa",_variant_t((IDispatch*)pConnection),
adOpenStatic,adLockOptimistic,adCmdText);
long lDataLength = pRs->Fields->GetItem("aa")->ActualSize;
varBLOB = pRs->Fields->GetItem("aa")->GetChunk(lDataLength);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pBuf = new BYTE[lDataLength];
SafeArrayAccessData(varBLOB.parray,(void **)pBuf);
CString strFileName = "d:\\temp.wav";
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
int len = sizeof(*pBuf);
outFile.Write(pBuf,lDataLength);
outFile.Close();
SafeArrayUnaccessData (varBLOB.parray);
delete []pBuf;
}
pRs->Close();
pConnection->Close();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货