線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1018
推到 Plurk!
推到 Facebook!

如何获取SQL异常?

答題得分者是:terrychen
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-10 09:42:19 IP:61.165.xxx.xxx 未訂閱
请问如何可以获取到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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-10 09:48:45 IP:211.22.xxx.xxx 未訂閱
您好: 系統的錯誤要先關掉,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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-10 10:30:36 IP:61.165.xxx.xxx 未訂閱
谢谢>>> > 發表人 -
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-10 10:43:49 IP:61.221.xxx.xxx 未訂閱
您好: 無須理會DM,那是TDataModule的NAME ~~應無所住而生其心~~
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-10 11:17:08 IP:61.165.xxx.xxx 未訂閱
嗯。明白了。谢谢!好象越来越喜欢这个论坛了呢。
系統時間:2024-06-27 0:34:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!