按客户端使用事务更新多个表数据到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中插入了这两条新记录。
这个方法真不错!我想这同样适用于服务器端的事务控制,没经测试。