首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADO错误异常处理?

ADO错误异常处理?
EN

Stack Overflow用户
提问于 2014-02-19 00:35:08
回答 1查看 6.4K关注 0票数 2

我刚刚从使用BDE转换为ADO,将表和查询替换为ADO组件中的相应表和查询。

我总是在try...catch中执行这样的查询:

代码语言:javascript
复制
//Fdm is Data Module
//TEndOfDay is TTable
//QEndOfDay is TQuery

Screen->Cursor = crSQLWait;
Fdm->QEndOfDay->SQL->Add("SELECT * FROM TEndOfDay");
try{
  Fdm->QEndOfDay->ExecSQL();
  Fdm->QEndOfDay->Open();
  Screen->Cursor = crDefault;
}
catch (EDBEngineError &DBEngineError){
  strError = DBEngineError.Message;
  Screen->Cursor = crDefault;
}
catch (EDatabaseError &DatabaseError){
  strError = DatabaseError.Message;
  Screen->Cursor = crDefault;
}
catch(...){
  strError = "Error";
  Screen->Cursor = crDefault;
}          

由于我切换到ADO,这些例外(DBEngineError,DatabaseError)是否适用?

我已经编辑了我的帖子,其中包括德尔福的人,他们反应很快。无论答案是否在Delphi代码中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 16:53:55

首先应该检查EADOError,这是特定的ADO相关异常,然后是EDatabaseError,后者是更一般的数据库异常。EDBEngineError是一个旧的BDE异常类,如果您不使用BDE,它将不再适用。

代码语言:javascript
复制
Screen.Cursor := crSQLWait;
Fdm.QEndOfDay.SQL.Text := 'SELECT * FROM TEndOfDay';
try
  try
    Fdm.QEndOfDay.Open;
  except
    on E: EAdoError do
    begin
      // ADO specific error handling
    end;
    on E: EDatabaseError do
    begin
      // Generic database error handling
    end;
    on E: Exception do
    begin
      // Other exceptions (non-DB related)
    end;
  end;
finally
  // Revert cursor to default always.
  Screen.Cursor := crDefault;
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21868588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档