gpt4 book ai didi

delphi - ADO Error异常处理?

转载 作者:行者123 更新时间:2023-12-02 11:36:41 29 4
gpt4 key购买 nike

我刚刚通过将表和查询替换为 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com