delphi - ADO Error异常处理?

标签 delphi ado bde c++builder-xe4

我刚刚通过将表和查询替换为 ADO 组件中的等效项,从使用 BDE 切换到 ADO。

我总是在 try...catch 中执行查询,如下所示:

//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 人员包括在内,他们的回复很快。不管Delphi代码中是否有答案。

最佳答案

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

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;

关于delphi - ADO Error异常处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868588/

相关文章:

sql - 当列名是数字时,使用 VB.NET 中的 ADO 查询 Excel

ado - 如何记录 ADO 连接的执行语句

delphi - 让 Woll2Woll 与 Delphi 7 dbExpress 一起工作的方法?

delphi - 将带有 COM+ 的 ASP 站点移至 IIS 8.5

Delphi:如何为自定义组件创建额外的设计时菜单?

delphi - 计算 TDbGrid 中的行数

delphi - BDE、Windows 7 和 UAC

Delphi IDE 不可见

java - 以编程方式导出 Access 表

delphi - 知道如何解决 BDE 错误 $251e 吗?