程序代码如下:
long lDataSize;
char *pBuf = NULL;
    
CFile file("F:\\Des.jpg", CFile::modeCreate | CFile::modeWrite);
    
_RecordsetPtr m_Recordset;
m_Recordset.CreateInstance(__uuidof(Recordset));
m_Recordset->Open("Select * From VehiclePicture", m_Connection.GetInterfacePtr(),adOpenKeyset, adLockOptimistic, adCmdText);
if(VARIANT_FALSE == m_Recordset->adoBof && VARIANT_FALSE == m_Recordset->adoEof)
{
m_Recordset->MoveFirst();
        
lDataSize = m_Recordset->GetFields()->GetItem("photo")->ActualSize;///得到数据的长度
        if(lDataSize > 0)
{
    _variant_t varBLOB;
    varBLOB = m_Recordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);
    if(varBLOB.vt == (VT_ARRAY | VT_UI1))                                 ///判断数据类型是否正确
{
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);              ///得到指向数据的指针
SafeArrayUnaccessData(varBLOB.parray);
}
} file.WriteHuge((LPVOID)pBuf,lDataSize);
file.Close();
}为什么我打开硬盘F:\\Des.jpg 发现文件大小跟我向数据库中写的Src.jpg大小完全一样,但就是在硬盘上显示个叉叉,显示不出来;我将Src.jpg写入数据库字段中的程序完全正确,并且我测试过写到数据中数据的有效性,通过数据库邦定字段能显示出来;为什么我从数据库中再读出来,写到硬盘上就显示不出来呢,我将Des.jgp加载到VB中的Picture控件提示无效句柄,请问如何解决.....