X
XJYIN
Unregistered / Unconfirmed
GUEST, unregistred user!
MySql版本为MySQl 3.23.41(For Linux),用dbexpress 连接mysql数据库.
所有Mysql中table type= BDB (支持Transaction功能);
dbconn:TSqlConnection ;
cdsUser :TSqlClientDataSet;
(CommandText='select * from h_user_table');
table fields include :
usr_id varchar(15)
usr_password varchar(32)
usr_desc varchar(40)
ds:TDataSource ;
dbgrid:TDbGrid ;
我的做法是 Mysql资料<== dbconn <== cdsUser <== DS <== dbgrid
在dbgrid 中修改资料后,按button
存盘,发现资料还是被update ,并未 roolback,
Transaction功能未能实现。
其Button code 如下:
procedure TForm1.Button1Click(Sender: TObject);
var
TD: TTransactionDesc;
int:integer;
begin
if not dbconn.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
dbconn.StartTransaction(TD);
end;
try
if cdsuser.ChangeCount>0 then
cdsuser.ApplyUpdates(-1);
i:=strtoint('abc'); //产生异常事件,激活dbconn.roolback .
dbconn.Commit(TD);
except
dbconn.Rollback(TD);
end;
end;
但我用MySQl-Front 下如下Sql :
SET AUTOCOMMIT=0 ;
BEGIN WORK ;
update h_user_table set usr_id = 'test test'
where
usr_id = 'test'
ROLLBACK ;
SET AUTOCOMMIT=1 ;
查看资料发现却未被Update.这说明mysql数据库支持Transaction
功能。
哪位能告诉我为什么吗?[blue][/blue][black][/black]
所有Mysql中table type= BDB (支持Transaction功能);
dbconn:TSqlConnection ;
cdsUser :TSqlClientDataSet;
(CommandText='select * from h_user_table');
table fields include :
usr_id varchar(15)
usr_password varchar(32)
usr_desc varchar(40)
ds:TDataSource ;
dbgrid:TDbGrid ;
我的做法是 Mysql资料<== dbconn <== cdsUser <== DS <== dbgrid
在dbgrid 中修改资料后,按button
存盘,发现资料还是被update ,并未 roolback,
Transaction功能未能实现。
其Button code 如下:
procedure TForm1.Button1Click(Sender: TObject);
var
TD: TTransactionDesc;
int:integer;
begin
if not dbconn.InTransaction then
begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
dbconn.StartTransaction(TD);
end;
try
if cdsuser.ChangeCount>0 then
cdsuser.ApplyUpdates(-1);
i:=strtoint('abc'); //产生异常事件,激活dbconn.roolback .
dbconn.Commit(TD);
except
dbconn.Rollback(TD);
end;
end;
但我用MySQl-Front 下如下Sql :
SET AUTOCOMMIT=0 ;
BEGIN WORK ;
update h_user_table set usr_id = 'test test'
where
usr_id = 'test'
ROLLBACK ;
SET AUTOCOMMIT=1 ;
查看资料发现却未被Update.这说明mysql数据库支持Transaction
功能。
哪位能告诉我为什么吗?[blue][/blue][black][/black]