比如我用adoquery,后台是sql server ,当用adoquery进行数据更新时,请问能否支持事务!
如下:
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句1');
adoquery.execsql;
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句2');
adoquery.execsql;
我如果这样操作数据库的话,那么那后台数据库的机器发生故障时,那么我如果更新一半数据,另一半
还没有更新,那么我的程序就没有事务性了。请问在不用sql server的存储过程时,能否做到事务支持呢?
如下:
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句1');
adoquery.execsql;
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句2');
adoquery.execsql;
我如果这样操作数据库的话,那么那后台数据库的机器发生故障时,那么我如果更新一半数据,另一半
还没有更新,那么我的程序就没有事务性了。请问在不用sql server的存储过程时,能否做到事务支持呢?
with adoquery do
begin
close;
sql.text:='BEGIN TRANSACTION'
+#13
+'update .....'
+#13
+'update .....'
+#13
+'COMMIT TRANSACTION';
ExecSQL;
end;
try
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句1');
adoquery.execsql;
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('update 语句2');
adoquery.execsql;
ADOConnection.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
Try
写你要更新的语名
......
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
end;