提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:黄竹雯|2019-03-20 16:48:50.000|阅读 1711 次
概述:Transaction(事务)是一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务。本篇文章描述了如何在UniDAC中实现Transaction(事务)支持。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi,C++Builder, Lazarus (以及 Free Pascal), Mac OS X, iOS,Android,Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着你可以在你的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。
本篇文章描述了如何在UniDAC中实现Transaction(事务)支持。所以你应该要十分熟悉事务,才能很好的理解如何使用UniDAC来控制它们。
简单说一下Transaction(事务)是什么。事务是一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务。
本地事务由TUniConnection组件的,,和其他方法管理。每次当你准备开始一个事务时,你都应该检查它是否处于活动状态。你可以使用属性执行此操作。当事务处于活动状态时调用StartTransaction将导致异常。 以下是一个简短的示例,演示了使用本地事务的一般方法:
if not UniConnection.InTransaction then UniConnection.StartTransaction; try // Do some actions with database. For example: UniSQL1.Execute; UniSQL2.Execute; // Commit the current transaction to reflect changes in database if no errors were raised UniConnection.Commit; except // Rollback all changes in database made after StartTransaction if an error was raised UniConnection.Rollback; end;
激活事务后,所有操作(包括打开数据集)都将在当前事务的上下文菜单中执行,直到你提交或rollback(回滚)它为止。如果没有启动任何事务,则每个操作执行的更改将在操作完成后立即反映在数据库中(所谓的AutoCommit模式)。 使用InterBase提供程序时,请注意AutoCommit属性。默认情况下,AutoCommit属性具有True值,导致在有任何数据修改时自动执行CommitRetaining或RollbackRetaining。 将属性设置为False后,你可以自己管理事务。TUniConnection.AutoCommit属性的优先级高于数据集的特定选项“AutoCommit”(TUniQuery,TUniTable)。如果TUniConnection.AutoCommit属性设置为False, 则只能提交所有事务(不管数据集的特定选项“AutoCommit”值)。如果你希望大多数数据集自动提交事务,并且其中一些数据集可以手动控制事务,则应将TUniConnection.AutoCommit属性设置为True,并且仅对具有手动事务控制的数据集,将特定选项“AutoCommit”值设置为False。
可以使用传递给重载的StartTransaction方法的参数来自定义每个显式启动的事务的行为。你可以指定事务的隔离级别以及此事务是否可编辑。主题中有关于这些参数的更详细说明。
UniDAC还支持使用Savepoints。方法允许你在事务中定义命名保存点。你可以使用方法中的保存点名称将数据库中的更改rollback(回滚)到保存点创建时的实际状态。调用RollbackToSavepoint可使当前事务保持活动状态。
CommitRetaining和RollbackRetaining方法类似于Commit和Rollback,但它们保持当前事务处于活动状态。这意味着你不需要像使用Commit和Rollback方法那样调用StartTransaction来继续处理事务。CommitRetaining和RollbackRetaining的功能由InterBase/Firebird/Yaffil服务器支持。 对于其他服务器,此功能通过在Commit或Rollback之后调用StartTransaction来模拟。
类似InterBase的服务器在单个连接中支持多个同时活动的事务,并且在打开游标时需要事务处于活动状态。你可以不用管它,因为UniDAC封装了这些特性,让你以类似于与其他数据库服务器一起工作的方式工作。 如果你想让InterBase服务器的功能参与运行并行事务,你应该将几个TUniTransaction组件放在TCustomUniDataSet的表单和设置属性上,例如使用这些组件的Transaction和UpdateTransaction。Transaction和UpdateTransaction属性仅用于InterBase提供程序。对于其他提供者,将忽略这些属性。
UniDAC使用MTS管理Oracle和Microsoft SQL Server连接的分布式事务。分布式事务由TUniTransaction组件控制。您可以使用方法将连接添加到分布式事务上下文。MTS分布式事务协调器允许将连接混合到不同的服务器和不同的服务器类型。
begin UniConnection1.Connect; UniConnection2.Connect; UniTransaction.AddConnection(UniConnection1); UniTransaction.AddConnection(UniConnection2); UniTransaction.StartTransaction; UniSQL1.Connection := UniConnection1; UniSQL2.Connection := UniConnection2; try UniSQL1.Execute; UniSQL2.Execute; UniTransaction.Commit; except UniTransaction.Rollback; end; end;
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢