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