_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("cj.media",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdTable);
long lDataSize = m_pRecordset->GetFields()->GetItem("MDATA")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("MDATA")->GetChunk(lDataSize);
CString fileName = m_pRecordset->GetCollect("MNAME").bstrVal;//从数据库中获取文件名
CString fileExt = m_pRecordset->GetCollect("MTYPE").bstrVal;//获取扩展名
//判断类型是否正确
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pBuf = NULL;
//得到指向数据的指针
SafeArrayAccessData(varBLOB.parray, (void **)&pBuf);
/**//***对pBuf数据的处理***/
static char BASED_CODE szFilter[] =_T("All Files (*.*)|*.*||") ;
CFileDialog dlg(FALSE,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() == IDCANCEL )
return;
..........
}
在点击取消时报错,但是点击确认却能正确执行。
在线等,急!!
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("cj.media",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdTable);
long lDataSize = m_pRecordset->GetFields()->GetItem("MDATA")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("MDATA")->GetChunk(lDataSize);
CString fileName = m_pRecordset->GetCollect("MNAME").bstrVal;//从数据库中获取文件名
CString fileExt = m_pRecordset->GetCollect("MTYPE").bstrVal;//获取扩展名
//判断类型是否正确
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
BYTE *pBuf = NULL;
//得到指向数据的指针
SafeArrayAccessData(varBLOB.parray, (void **)&pBuf);
/**//***对pBuf数据的处理***/
static char BASED_CODE szFilter[] =_T("All Files (*.*)|*.*||") ;
CFileDialog dlg(FALSE,NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() == IDCANCEL )
return;
..........
}
在点击取消时报错,但是点击确认却能正确执行。
在线等,急!!
unhandle exception in Media.exe (kernel32.dll):0xe06d736:microsoft c++ Exception