如何获取SQL异常? |
答題得分者是:terrychen
|
Amanda_Chen
一般會員 ![]() ![]() 發表:25 回覆:82 積分:21 註冊:2003-12-28 發送簡訊給我 |
请问如何可以获取到SQL server抓取到的异常呢?如Delphi7+SQL2000中,有A主表,B副表,A表的主键值(PK)编码是B表的外键值(FK)。添加B表时,当编码在A表中并不存在时,系统会给出异常,EDatabaseError,EOleException.
可是,我不知道怎样才能获取到啊。程式片断如下:
ADODataSet1.Open;
try
ADODataSet1.Recordset:=Execute;
except
// on E:EOleException do
Showmessage('Insert fail!');
end;
//ADODataSet1.RecordsetState:=stOpen;
try
ADODataSet1.CommandType:=cmdText;
Except
on EDatabaseError do
begin
ShowMessage('ADODataSet1.commandType wrong!');
abort;
end;
end;
可是还是系统的异常机制先跑出来,我的语句没起作用的。
请各位高高手指教。多谢!
|
terrychen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
您好:
系統的錯誤要先關掉,Tools=>Debugger options =>Language Execption=>Stop on Delphi execption將打」勾取消
try DM.factory.Post; DM.BuConnection.CommitTrans; except on E:Exception do begin DM.BuConnection.RollbackTrans; if Pos('Attempt to insert duplicate key row',E.Message)>0 then //假設當資料重複時資料庫回傳的錯誤訊有以上字串.... raise Exception.Create('新增的資料已經存在') else raise Exception.Create('資料儲存失敗,錯誤訊息如下:'#13 E.message); end; end; end;~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/02/10 09:55:38 |
Amanda_Chen
一般會員 ![]() ![]() 發表:25 回覆:82 積分:21 註冊:2003-12-28 發送簡訊給我 |
|
terrychen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
Amanda_Chen
一般會員 ![]() ![]() 發表:25 回覆:82 積分:21 註冊:2003-12-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |