关于ADO事务处理的正确写法……(50分)

  • 主题发起人 主题发起人 e518
  • 开始时间 开始时间
E

e518

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TFrmHotelRoomType.BtnAddClick(Sender: TObject);
var
s:string;
begin
if sender=BtnAdd then begin
s:='insert into Hotel.RoomType (rRoomType,rRoomPriceDay,rRoomPriceHour)'+
' values ('+
quotedstr(RoomType.tType)+','+
quotedstr(floattostr(RoomType.tPriceDay))+','+
quotedstr(floattostr(RoomType.tPriceHour))+')';
end
else begin
s:='update RoomType set'+
' rRoomType='+quotedstr(RoomType.tType)+','+
' rRoomPriceDay='+quotedstr(floattostr(RoomType.tPriceDay))+','+
' rRoomPriceHour='+quotedstr(floattostr(RoomType.tPriceHour))+
' where rRoomType='+quotedstr(ADORoomType.FieldValues['rRoomType']);
end;

HotelDM.ADOLink.BeginTrans;
with HotelDM.CommitSQL do begin
Close;
SQL.Clear;
SQL.Add(s);
ExecSQL; //这一行,我见有些资料是放于TRY语句之后,CommitTrans之前,不知怎样的才对
//请各位大虾指正。
try
//ExecSQL; //这一行。。。。。
HotelDM.ADOLink.CommitTrans;
except
HotelDM.ADOLink.RollbackTrans;
s:='房间类型:“'+RoomType.tType+'”已存在,请重输新值。';
MessBox(s);
end;
end;
end;
 
try
ExecSQL; //这一行。。。。。
HotelDM.ADOLink.CommitTrans;
我认为这么写是对的
 
为什么CommitTrans后不能即时更新, 只有把ADO表CLOSE,OPEN后才可显示最新的内容??
 
adodataset.requery后更新
 
因该这样:

begin
...//确定S
//一下不会异常
HotelDM.CommitSQL do
begin
Close;
SQL.Clear;
SQL.Add(S);
end;
HotelDM.ADOLink.BeginTrans;
try
HotelDM.CommitSQL.ExecSQL;//此处可能异常
HotelDM.ADOLink.CommitTrans;
except
HotelDM.ADOLink.RollbackTrans;
s:='房间类型:“'+RoomType.tType+'”已存在,请重输新值。';
MessBox(s);
end;
end;
 
我觉得 HotelDM.CommitSQL.ExecSQL;
是交给数据库服务器执行的,不能这样用事务喔。
例如:
try
ADOLink.BeginTrans;
ado1.ExecSQL;
ado2.ExecSQL;//假如这里出错,将无法将 ado1的数据Rollback
如果你用FieldbyName 。。。。 那应该可以
except
ADOLink.RollbackTrans
end;
 
to Fanny501:
1、请问事务处理语句的正确写法如何写?
2、如果要在一个事务中提交多条SQL语句,又该如何写?
多谢!我QQ11602585。
 
try
with AdoQuery do
begin
close;
sql.clear;
sql.Add(Sql_Str);
ExecSQL;
close;
SetComplete;
end;
except
on Exception do
begin
raise; //Exception.Create('Execute SQL Statement Error:'+Sql_Str);
SetAbort;
end;
end;
用于支需要事务的com+
 
各位大虾们,我忘了说,我的数据库是ACCESS2000,它支持储存过程吗?如何做呢??
 
up一下,各位就再帮帮吧
 
请问SQLSERVER2000的事务如何实现呢
 
我也想知呀,
 
后退
顶部