用adotadaset访问数据库,错误怎么捕获?

herozc 2003-06-18 06:33:45
在delphi 中
用adotadaset访问数据库
_________________________________________________________________________
Project NewHelpKsf.exe raised excption class EOLeException with message
'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)'.Process stopped.Use
Step or Run to continue.
_________________________________________________________________________
这个错误怎么捕获?
换成自己定义的错误.
...全文
27 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
herozc 2003-06-18
  • 打赏
  • 举报
回复
谢谢!
用 readersm68(地主) 的方法,以上两种都好用。谢谢!

分少,
readersm68(地主) :40
bluecyclone(永远的小学生) :30
qixin000(小齐) :30

firetoucher(风焱) 在另外一个给吧



herozc 2003-06-18
  • 打赏
  • 举报
回复
我仅仅作了这一个操作。
ADODataSet.Append;
之后
ADODataSet.UpdateBatch();
而且程序是运行到这里出的错。
readersm68 2003-06-18
  • 打赏
  • 举报
回复
你直接运行*.exe看看,不在Delphi环境下
herozc 2003-06-18
  • 打赏
  • 举报
回复
用数据库的监视器?
是写oracle的过程么?
我是想在delphi里控制
readersm68 2003-06-18
  • 打赏
  • 举报
回复
不在Delphi环境下,应该可以屏蔽
firetoucher 2003-06-18
  • 打赏
  • 举报
回复
但是程序跟踪的结果显示,在进入except之前就出现如前所述的错误,
~~~~~~~~~~~~~~~~~~~~~~~~~~
证明错误并不是ADODataSet.UpdateBatch();发出的
将你的dataset修改/插入等操作全部写入try...except

最好用error的id判断,而不是message
readersm68 2003-06-18
  • 打赏
  • 举报
回复
用数据库的监视器
herozc 2003-06-18
  • 打赏
  • 举报
回复
程序如小齐所说:
procedure TFormTransctionDefine.BitBtnSaveClick(Sender: TObject);
begin
if dsTransction.State in [dsInsert] then
begin
dsTransction.UpdateBatch();
end;
end;

procedure TFormTransctionDefine.dsTransctionPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
action :=daabort;
application.MessageBox('保存出错','提示',0);
dsTransction.Cancel;
end;

但是出错时程序走不进来。
是不是还有什么缺陷,请指正!谢谢!
herozc 2003-06-18
  • 打赏
  • 举报
回复
程序是这样的:

//添加保存
try
ADODataSet.UpdateBatch();
except
on E:Exception DO
if e.Message = 'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)' then
showmessage('input again!');
end;

但是程序跟踪的结果显示,在进入except之前就出现如前所述的错误,
很困惑我。

我仅仅想屏蔽这个错误,给出自己的提示。
谢谢!
qixin000 2003-06-18
  • 打赏
  • 举报
回复
那你在ADODataSet的OnPostError事件里写上
action := daabort;
application.MessageBox('保存出错!!','提示',0);
ADODataSet.Cancel();
mbzdh 2003-06-18
  • 打赏
  • 举报
回复
up
bluecyclone 2003-06-18
  • 打赏
  • 举报
回复
我也遇到过!
你这样试试!
try
……
except
on E: Exception do
if e.Message = 'ORA-00001:违反唯一约束条件(KSFUSER.SYS_C002723)' then
……

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧