提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李爽夏|2019-01-29 13:38:55.000|阅读 821 次
概述:本篇文章介绍使用UniDAC数据集组件进行数据编辑的常用方法。
# 慧都年终大促·界面/图表报表/文档/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数据集组件进行数据编辑的常用方法。
TUniTable, TUniQuery和TUniStoredProc是允许检索和编辑数据的UniDAC组件。要编辑每个组件的数据,请在KeyFields属性中指定键字段名称。如果KeyFields为空字符串,则Oracle、PostgreSQL、Interbase、SQLite和所有基于ODBC的提供程序都将尝试从发送附加查询的服务器请求有关主键的信息(这可能会对性能产生负面影响)。SQL Server和MySQL提供程序将使用服务器发送的元信息和数据。SQL Server提供程序具有UniqueRecords选项,该选项允许在查询中省略主键字段时自动从表中请求主键字段。
如果要打开的数据集没有唯一标识记录的字段,则可以通过服务器的方式通过Oracle、Firebird 2.0、PostgreSQL和SQLite服务器来解决这个问题。对于Oracle和SQLite服务器,您应该将RowID列添加到查询中。带Firebird 2.0 - DB_KEY。如果您的表是使用OID创建的,那么可以使用PostgreSQL服务器OID列作为关键字字段。
对于具有来自多个表的数据的数据集,默认情况下只有一个表是可更新的。您应该在UpdatingTable属性中指定要更新的表名,否则属于字段列表中第一个字段的表将是可更新的。如果SetFieldsReadOnly选项设置为True(默认情况下),则自动生成的更新SQL语句中未使用的字段将标记为只读。对于复杂查询(使用多个表、同义词、dblinks、聚合字段的语句),我们建议使用Oracle、PostgreSQL和所有基于ODBC的提供程序启用 ExtendedFieldsInfo 选项。
如果插入/发布、更新或刷新记录操作影响了多个记录,UniDAC将引发异常。要禁止此类异常,应将StrictUpdate选项设置为False。
为了更灵活地控制数据修改,可以填充update-SQL语句。它们由SQLInsert、SQLUpdate、SQLDelete和SQLRefresh 属性表示,并在Insert/Post、Edit/Post、Delete和Refresh操作中自动执行。在设计时,可以在组件编辑器的“SQL Generator”选项卡上生成默认的更新SQL语句。可以根据需要修改生成的语句。但是,如果为每个记录动态生成更新查询,则只有更改后的值才会发送到服务器。
对于某些特定情况,此功能不够。它可以通过TUniUpdateSQL组件进行扩展。TUniUpdateSQL允许为每个更新操作关联一个单独的TUniSQL/TUniQuery/TUniStoredProc组件。
UniDAC允许在客户端缓存更新(所谓的“Cashed Updates”),然后批量发布所有更新。这意味着在调用Post或Delete之后,更改不会立即反映在服务器上。调用ApplyUpdates方法后,所有缓存的更改都将发布到服务器。UpdateBatchSize选项允许设置要同时发布的更改数。
如果已经为数据库表中的列定义了默认值或表达式,则可以设置UniDAC,以便它从服务器请求这些表达式。这些表达式将分配给TField对象的DefaultExpression 属性。如果已填充默认表达式值,则将替换这些值。此行为由默认值选项控制,默认情况下禁用该选项。
编辑数据集时,通常不方便手动填充关键字字段值,而是自动生成它们。有三种方法可以做到。
第一种方法,最有用的方法,是使用服务器方法自动生成关键字字段值。
SQL Server、MySQL和SQLite允许在表中定义自动增量列。这不需要在客户机上进行额外的处理。对于SAP Sybase ASE、Oracle、PostgreSQL和Interbase提供程序,需要指定特定于keysequence(Interbase的KeyGenerator)的选项。自动生成的值自动反映在数据集中。
第二种方法是在BeforePost事件处理程序中生成并填充关键字字段值。通常,这种方式需要执行查询以从服务器检索一些信息。所以这种方法可能只在某些特定的情况下有用。
第三种方法是创建AFTER INSERT触发器,用适当的值填充字段。但返回触发器生成的值时出现问题。尽管这个问题可以解决(见下一段),但这种方法被认为是非最优的。因此,如果可能,尝试选择另一种方法。
但是,可以使用特定于QueryIdentity的选项为SQL Server提供程序禁用检索生成的值。这将提高记录插入的性能。
在某些情况下,UniDAC允许自动刷新数据集中的记录,以使其值保持最新。
使用刷新选项,您可以在编辑前、插入或删除后使UniDAC刷新当前记录。它是通过执行一个附加的查询来完成的。
DMLRefresh选项允许在插入或更新后刷新当前记录,与RefreshOptions类似,但其工作方式不同。这允许实现比刷新选项更高的性能。基于MySQL、SQLite和ODBC的提供程序不支持DMLRefresh。
如果要控制插入或更新后需要刷新当前记录的哪些字段,应执行以下操作:在更新查询中定义与数据集中字段名称对应的名称的输出参数,并将ReturnParams选项设置为
True。执行更新查询后,数据集读取输出参数的值,并将其放入具有相应名称的字段中。
购买UniDAC正版授权,请点击“”哟!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至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幢