QQ登录

只需一步,快速开始

255上位机VC MFC使用ODBC捕获异常与处理

[ 复制链接 ]

255上位机VC MFC使用ODBC捕获异常与处理

255上位机VC MFC使用ODBC捕获异常与处理

255上位机VC MFC使用ODBC捕获异常与处理
功能展示
有时在删除数据库记录时,某些情况会出现错误警告,这是因为没有为删除操作作充分的错误处理,当前例程以删除数据库记录为例演示如何捕获异常及处理异常,效果如图,点击删除记录会删除数据库内数据且进行删除操作的异常捕获与处理;
要点提示
MFC能够很好的进行默认的错误处理,但个别情况还是不能满足我们的要求,如上一例程在删除操作时即使删除成功了还会报错,提示更新出错,这时我们就得自己处理异常而不用MFC默认的处理方式;
错误的捕获与处理可以用try,,,catch组合块,在当前实现 TRY 。。。。CATCH中任何异常都会被捕获;
实现功能
1.按照前面例程或当前视频中的方法,用根目录的Student.mdb创建数据源;
2.新建一个应用前面数据源的基于单文档的应用程序,具体过程可参考视频学习;
3.给VIEW类添加一新变量BOOLm_bAdd;//标识是否在添加新记录 ,并初始化m_bAdd=FALSE;
4.按程序界面,添加三编辑框,ID分别为IDC_ID,IDC_NAME,IDC_GRADYEAR,分别关联SET类中的三个变量  m_ID;  m_Name; m_GradYear;
再分别添加按钮<添加记录)><删除记录><修改记录,关联函数
  1. void CGkbc8View::OnRecdsetAdd()
  2. {
  3.         if(m_bAdd)
  4.         {
  5.                 OnMove(ID_RECORD_FIRST);
  6.         }
  7.         m_pSet->AddNew(); //点击一次 准备新项,再点击添加
  8.         m_bAdd=TRUE;
  9.         UpdateData(FALSE);        
  10. }
复制代码
  1. void CGkbc8View::OnRecordDelete()
  2. {
  3.         if(AfxMessageBox("您确认删除该记录??",MB_YESNO)!=IDYES)
  4.                 return;
  5.         if(m_bAdd)
  6.         {
  7.                 m_pSet->CancelUpdate();
  8.                 m_bAdd=FALSE;
  9.                 m_pSet->MovePrev();
  10.                 return;
  11.         }
  12.         try{
  13.                 m_pSet->Delete();
  14.         }
  15.         catch(CDBException* e1)
  16.         {
  17.                 AfxMessageBox("删除失败:\n"+e1->m_strError,MB_ICONEXCLAMATION);
  18.                         m_pSet->MoveFirst();
  19.                 e1->Delete();
  20.                 UpdateData(FALSE);
  21.                 return;
  22.         }
  23.         try{
  24.                 m_pSet->MoveNext();
  25.                 if(m_pSet->IsDeleted())
  26.                         m_pSet->MoveFirst();
  27.                 if(m_pSet->IsDeleted())
  28.                         AfxThrowDBException(SQL_ERROR,m_pSet->m_pDatabase,m_pSet->m_hstmt);
  29.                 UpdateData(FALSE);
  30.         }
  31.         catch(CDBException* e2)
  32.         {
  33.                 AfxMessageBox("记录集没有记录!!",MB_ICONEXCLAMATION);
  34.                 e2->Delete();
  35.                 m_pSet->Close();
  36.                 m_pSet->Open();
  37.                 OnRecdsetAdd();
  38.         }        
  39. }
复制代码
  1. 5.添加虚函数OnMove
  2. BOOL CGkbc8View::OnMove(UINT nIDMoveCommand)
  3. {
  4.         if(m_bAdd)//判断是否在添加记录
  5.         {
  6.                 if(!UpdateData())
  7.                         return FALSE;
  8.                 if(m_pSet->CanUpdate())
  9.                         m_pSet->Update();
  10.                 m_pSet->Requery();
  11.                 UpdateData(FALSE);
  12.                 m_bAdd=FALSE;
  13.                 return TRUE;
  14.         }        
  15.         return CRecordView::OnMove(nIDMoveCommand);
  16. }
复制代码
我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:255.上位机VC MFC使用ODBC捕获异常与处理.zip 
文件大小:43.71 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索