加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Unknow error 0x800a0e78

(2014-08-13 10:31:28)
标签:

mfc

ado

0x800a0e78

分类: 数据库

今天做了个小功能,对数据库进行删除操作,代码如下:

try
   {
    CString sqlDelete;
    sqlDelete.Format(L"delete from fileInfo where fileNum = '%s';", fileNum);
    CMainFrame *pMain = static_cast(theApp.m_pMainWnd);
    CVtopPlatformView* vtopView = (CVtopPlatformView*)pMain->GetActiveView();
    vtopView->m_pFileinfoRecordset->Open(_variant_t(sqlDelete), vtopView->m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockBatchOptimistic, adCmdText);
    vtopView->m_pFileinfoRecordset->Delete(adAffectCurrent);
    vtopView->m_pFileinfoRecordset->MoveFirst();
    vtopView->m_pFileinfoRecordset->Close();
      }
   catch (_com_error &e)
   {
    AfxMessageBox(e.ErrorMessage());
   }

结果出现了“Unknow error 0x800a0e78”的异常提示。

经过一番周折,原因终于找到了,原来是m_pFileInfoRecordset 内的字段长度为零,像插入和删除等不是查询的的命令,没必要返回一个命令集。返回的命令集的字段数是0,若调用adoeof或其他某些接口就会报错的。

解决方案:

try
   {
    CString sqlDelete;
    sqlDelete.Format(L"delete from fileInfo where fileNum = '%s';", fileNum);
       //关联数据集
    CMainFrame *pMain = static_cast(theApp.m_pMainWnd);
    CVtopPlatformView* vtopView = (CVtopPlatformView*)pMain->GetActiveView();

    vtopView->m_pCommand.CreateInstance(__uuidof(Command));
    vtopView->m_pCommand->ActiveConnection = vtopView->m_pConnection;
    vtopView->m_pCommand->CommandText = _bstr_t(sqlDelete);
    vtopView->m_pCommand->Execute(NULL, NULL, adCmdText);
   }
   catch (_com_error &e)
   {
    AfxMessageBox(e.ErrorMessage());
   }

问题终于解决了!!!!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有