|

楼主 |
发表于 2004-12-8 20:32:34
|
显示全部楼层
你回答的问题在没有事务提交的情况下是正确的,在有事务的时候是错误的,而我们恰恰是要在事务中使用,请看以下测试代码:
procedure TMainForm.Exec(A:String);
var
i:Integer;
begin
with DataSetds do
begin
Close;
i := Connection.ExecuteSQL('delete from bd_invtype_dt where SN_PRE=''AB''');
Edit1.Text :=Sysutils.IntToStr(i);
if i<=0 then Raise Exception.Create('Error');
end;
end;
procedure TMainForm.BitBtn1Click(Sender: TObject);
var
AHandle:TTransactionHandle;
begin
with DataSetds do
begin
AHandle := Connection.Transaction.Start(False);
try
Exec('delete from bd_invtype_dt where SN_PRE=''AC''');
Connection.Transaction.Commit(AHandle);
except
Connection.Transaction.Rollback(AHandle);
Raise;
end;
end;
end;
在事务中无论是否执行有无数据的删除,最后都会触发异常,首先说明i := Connection.ExecuteSQL('delete from bd_invtype_dt where SN_PRE=''AB''');在没有事务的情况下返回1
请教如何处理???????????????????
请尽快回复 |
|