给我的一段例程你参考一下吧:
unit TestError;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB, DBTables;type
TForm1 = class(TForm)
ADOCommand1: TADOCommand;
ADOConnection1: TADOConnection;
Button1: TButton;
Database1: TDatabase;
Query1: TQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
Adoerrors: error;
begin
Adoerrors := nil;
try
ADOCommand1.Execute;
except
Adoerrors := adoconnection1.Errors.item[0];
showmessage(inttostr(adoerrors.number));
//可以用Const AdoDataSetKeyViol=-2147217873;关键字或者唯一索引重复
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert testerror values(1,''1'')');
try
ExecSQL;
except
on E: EDBEngineError do
begin
for i := 0 to E.ErrorCount - 1 do
begin
case E.Errors[i].ErrorCode of
$2601:
ShowMessage('呵呵!不允许鍵值重复!');
$0021:
Showmessage('太糟糕了,系统发生故障!TMD');
$270B:
Showmessage('对不起,你的受到主外键约束!怎么样,很失望吧!');
$2B05:
Showmessage('太糟糕了,网络连接超时判负!TMD');
$0028:
Showmessage('锁定违例!');
$1200:
Showmessage('不能识别的SQL错误!呵呵,有事干了!');
$2501:
Showmessage('太糟糕了,你的内存不足!请使用N(N>=10000)兆内存');
$2605:
Showmessage('对不起,你所添加的数据违反外键约束!');
$2728:
Showmessage('你所操作的表不存在!');
$2801:
Showmessage('记录已经被其它用户琐定!');
$2A06:
Showmessage('数据引擎初始化错误!');
$2C01:
Showmessage('网络初始化失败!');
$2C07:
Showmessage('呜呜..呜呜!一个我不知道的网络错误,这不可能!');
$2C0D:
Showmessage('是谁干的!!服务器竟然没打开!');
$3E07:
Showmessage('初始化失败!');
$3303:
//ShowMessage('服务器端错误:一般的SQL错误!');
else
raise EDatabaseError.Create(E.Message);
end; //case
end; //for
end; //on EDBError
end;
end;
end;end.
unit TestError;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB, DBTables;type
TForm1 = class(TForm)
ADOCommand1: TADOCommand;
ADOConnection1: TADOConnection;
Button1: TButton;
Database1: TDatabase;
Query1: TQuery;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
Adoerrors: error;
begin
Adoerrors := nil;
try
ADOCommand1.Execute;
except
Adoerrors := adoconnection1.Errors.item[0];
showmessage(inttostr(adoerrors.number));
//可以用Const AdoDataSetKeyViol=-2147217873;关键字或者唯一索引重复
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
begin with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert testerror values(1,''1'')');
try
ExecSQL;
except
on E: EDBEngineError do
begin
for i := 0 to E.ErrorCount - 1 do
begin
case E.Errors[i].ErrorCode of
$2601:
ShowMessage('呵呵!不允许鍵值重复!');
$0021:
Showmessage('太糟糕了,系统发生故障!TMD');
$270B:
Showmessage('对不起,你的受到主外键约束!怎么样,很失望吧!');
$2B05:
Showmessage('太糟糕了,网络连接超时判负!TMD');
$0028:
Showmessage('锁定违例!');
$1200:
Showmessage('不能识别的SQL错误!呵呵,有事干了!');
$2501:
Showmessage('太糟糕了,你的内存不足!请使用N(N>=10000)兆内存');
$2605:
Showmessage('对不起,你所添加的数据违反外键约束!');
$2728:
Showmessage('你所操作的表不存在!');
$2801:
Showmessage('记录已经被其它用户琐定!');
$2A06:
Showmessage('数据引擎初始化错误!');
$2C01:
Showmessage('网络初始化失败!');
$2C07:
Showmessage('呜呜..呜呜!一个我不知道的网络错误,这不可能!');
$2C0D:
Showmessage('是谁干的!!服务器竟然没打开!');
$3E07:
Showmessage('初始化失败!');
$3303:
//ShowMessage('服务器端错误:一般的SQL错误!');
else
raise EDatabaseError.Create(E.Message);
end; //case
end; //for
end; //on EDBError
end;
end;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货