[转载红鱼儿]kbmmw 开发点滴:kbmMW在事务中批量执行SQL

客户端使用事务更新多个表数据到kbmMW服务器,使用TkbmMWClientTransactionResolve, 可以一次性提交多个修改的数据集到服务器端,服务器利用事务来执行数据的更新,成功,提交事务,不成功,则Rollback事务。在实际开发中,可能遇到 在更新数据集的同时,还要执行单独的SQL,处理业务逻辑。方法是:用一个单独的TkbmMWClientQuery来执行。具体用法:

kbmMWClietnQuery3.Query.Text:='Update T1 Set F2=1 where F1=1';

kbmMWClientQuery3.TransactionOperation:=mwtoExecute;//必须设置该数据集为执行要SQL

然后用kbmMWClientTransactionResolve同更新的数据集一起提交:

kbmMWClientTransactionResolver1.Resolve([kbmMWClientQuery1,kbmMWClientQuery2,kbmMWClientQuery3]);

其中,Query1,Query2为数据集,Query3为执行的SQL。

那么,如果有多条SQL要执行,该怎么办呢,象上面一样,再利用Query4、Query5...等方式提交SQL?

实际上,kbmMW为了我们提供了更好的方法,就是SQL分隔符。

叹号!:分隔多条要执行的SQL句语

等号=:分隔多条要返回结果的SQL句语(这种方法没想出应用的场景)

看一下具体的用法:

用上面的Query3同时执行两条SQL,象下面这样:

with kbmMWClientQuery3 do begin

    Query.SQL.Clear;

    Query.SQL.Add('!Insert into T1 (F1,F2) Values (100,'100');

    Query.SQL.Add('!Insert into T1 (F1,F2) Values (101,'101');

end;

用kbmMWClientTransactionResolve提交后,会看到在T1中插入了这两条新记录。

这个方法真不错!我想这同样适用于服务器端的事务控制,没经测试。

原文地址:https://www.cnblogs.com/xalion/p/2711006.html