处理DbExpress Sql错误代码245

时间:2012-05-18 06:27:57

标签: delphi error-handling delphi-xe2 dbexpress

我正在尝试为我的semestre考试构建一个调度程序应用程序,如果教师在特定的一周,某一天和某个小时都有课程,我就会在数据库中进行交互。有没有办法使用DBExpress处理Delphi Xe2中的Sql错误代码?我有一个查询在SQL Server2008上执行我的interogation(我让用户选择参数),这是问题所在;如果用户将一个参数字段设为空,则我的应用程序会在图像中显示该消息;以及这不是一种用户友好的显示错误消息的方式,所以我试图处理异常而没有任何成功:这是我写的用于查询SQL Server的代码:

with DataModule1.QueryV1 do
 Try
    Close;
    SQL.Clear; // clear command sql if there is
    SQL.Add ('SELECT * FROM OrarC WHERE IDZi =' +
    QuotedStr(LlbZiua.KeyValue)+ 'and IDInterval=' + QuotedStr(LlbIntOrar.KeyValue) +
     'and IDSala='+ QuotedStr(EdtIDSala.Text)+ EdtSaptamana.Text);
    Open;
  except
    on E:TDBXError do begin
      showmessage('Error!');
    end;
  End;

关于E:TDBXError我也试过E:EDataBaseError,结果是一样的;通过返回的SqlErrorCode处理错误会很好,但我不知道如何得到它。 enter image description here

1 个答案:

答案 0 :(得分:2)

在调试器下运行程序并观察引发的异常的实际类,或者您可以在运行时获取异常类,例如:

  ..
except on E: Exception do
  ShowMessage(E.ClassName);
end;

如果它确实是TDBXError那么您可以使用例如

uses
  dbxcommon;

except
  on E: TDBxError do begin
    if (E.ErrorCode = TDBXErrorCodes.InvalidArgument) then
      ..

但据我所知,245不是TDBXErrorCodes中的一个,所以可能还有另一个例外。如果它是EDatabaseError则没有什么可做的,因为该类没有错误代码字段。

不太相关,但也看到Data.DBXCommon.TDBXConnection.OnErrorEvent能够在中心位置管理dbexpress例外。