请问在Delphi里怎么捕捉Oracle的异常?在线等待

7thstar 2003-06-14 04:41:19
如题,DELPHI版本是6.0,数据库是Oracle8I,因为我在数据表里设了一个字段为唯一性,所以在插入一条新记录的时候如果表里的记录的字段已经有了这个数据,Oracle就会出错,提示违反唯一性,请问我在DELPHI中怎么捕捉它?高手救我
...全文
132 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
things 2003-06-15
  • 打赏
  • 举报
回复
insert.click
--------
beging
with query1 do
begin
insert;
try
FieldByName('code').asString := edit1.text;
FieldByName('name').asString := edit2.text;
except
ShowMessage('数据类型错误!');
Raise;
end;
ApplyUpdates;
CommitUpdates;
except
CancelUpdates;
end;
end;

Query1的OnUpdateError事件
-----------
begin
if Copy(E.Message, Pos('ORA', E.Message), 9) = 'ORA-00001' then
ShowMessage('主键冲突!')
else ShowMessage(E.Message);
end;
zhang21cnboy 2003-06-14
  • 打赏
  • 举报
回复
去查异常手册,使用主键冲突异常就可以搞定了!
fanshousu 2003-06-14
  • 打赏
  • 举报
回复

如果是直接连接到数据库中的,你可以直接将记录添加进去,如果有重复的话,那么程序将会发生异常,在Delphi中捕住这个异常即可(不要理会oracle的异常提示)
代码:
With DataSet1 do
begin
append;
fieldbyname('field1').value := edit1.text;
......
try
post
except
ShowMessage('Exception!');
DataSet1.cancle;
end;
end;

如果是多层结构的话,那么会麻烦一点;需要增加一个错误处理单元在拥有数据集的窗体中;幸运的是,我们不需要自己编写这个错误的单元,Delphi自己已经带有了
在new->Dialogs->RecoCile Error Dialog
当然,你需要在TClientDataSet的TimeReconcileError事件中加入如下代码:
Action := HandleReconcileError(DataSet,UpdateKind,E);
7thstar 2003-06-14
  • 打赏
  • 举报
回复
MM呀,黄花菜都等凉了
7thstar 2003-06-14
  • 打赏
  • 举报
回复
高手赶快救命阿
7thstar 2003-06-14
  • 打赏
  • 举报
回复
晕,这种方法我早就知道,也不打算采用,试想一下如果数据库里有几十万条记录这种效率,在试想一下在你查询完以后准备输入的时候,这时候有并发用户那个字段准备输入同样的记录这个时候怎么办?
wooden954 2003-06-14
  • 打赏
  • 举报
回复
在插入前判断一下有没有这个字段相同的值不就行了?
7thstar 2003-06-14
  • 打赏
  • 举报
回复
高手进来阿
源码直接下载地址: https://pan.quark.cn/s/387d7c8f6289 在使用IE浏览器的过程中,偶尔会出现重置为默认配置操作未能顺利完成的现象。这种情况的发生可能源于多种因素,包括注册表项出现偏差、浏览器附加组件之间存在不兼容、操作系统授权设置不当或受到恶意程序影响等。针对这一挑战,我们可以通过一系列系统性的方法来逐一诊断和纠正。首先需要验证当前用户是否具备管理员级别的操作权限。在执行重置配置的操作时,必须确保IE浏览器是以管理员身份启动的。具体操作方式为,使用鼠标右键单击IE程序图标,并从弹出的菜单中选择“以管理员身份运行”这一选项。其次,应当检查是否存在恶意软件。恶意程序有时会非法修改浏览器的配置信息,从而阻碍重置过程的正常进行。用户可以借助Windows系统自带的Microsoft Safety Scanner进行检测,或者选择安装并使用第三方安全防护软件执行全面的系统扫描。紧接着,需要对浏览器的缓存数据以及Cookies文件进行清理。在IE浏览器界面中,通过访问“工具”菜单并选择“Internet选项”,然后在弹出的设置界面中,切换至“常规”标签页,并执行清除浏览历史记录的操作,此过程应包含Cookies和临时互联网文件。倘若上述步骤均未能解决问题,那么可以考虑禁用或移除那些可能引发冲突的浏览器附加组件。相关操作需要在“工具”菜单下找到并打开“管理加载项”,对可疑的插件进行禁用处理,并在浏览器重新启动后再次尝试执行重置操作。再者,修复IE浏览器相关的注册表配置也是至关重要的环节。注册表编辑器是一个功能强大的系统工具,任何不当的操作都可能导致严重的系统问题,因此在进行修改前必须创建系统还原点作为安全备份。用户可以通过按下“Win+R”组合...

2,508

社区成员

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

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