UniDAC使用教程(二):数据更新

下载UniDAC最新版本

Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着您可以在您的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。

  • 自动数据更新
  • 数据更新的扩展设置
  • 缓存更新
  • 默认值/表达式
  • 自动增量值生成
  • 及时获取最新数据

自动数据更新

如果要打开的数据集没有唯一标识记录的字段,则可以通过服务器的方式通过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。

对于某些特定情况,此功能不够。它可以通过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允许自动刷新数据集中的记录,以使其值保持最新。

DMLRefresh选项允许在插入或更新后刷新当前记录,与RefreshOptions类似,但其工作方式不同。这允许实现比刷新选项更高的性能。基于MySQL、SQLite和ODBC的提供程序不支持DMLRefresh。

如果要控制插入或更新后需要刷新当前记录的哪些字段,应执行以下操作:在更新查询中定义与数据集中字段名称对应的名称的输出参数,并将ReturnParams选项设置为
True。执行更新查询后,数据集读取输出参数的值,并将其放入具有相应名称的字段中。

购买UniDAC正版授权,请点击“咨询在线客服”哟!

PyCharm
标签:数据库服务器

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月26日
下一篇 2019年1月26日

相关推荐

发表回复

登录后才能评论