unidac最新动态

自动数据更新

数据更新的扩展设置

缓存更新

默认值/表达式

自动增量值生成

及时获取最新数据

自动数据更新

、和是允许检索和编辑数据的组件。若要编辑每个组件的数据,请在属性中指定键字段名称。如果它是空字符串、和所有基于ODBC的提供程序都将尝试从发送附加查询的服务器请求有关主键的信息,这可能会对性能产生负面影响。服务器发送的元数据和数据将被SQLServer和MySQL提供者使用。SQLServer提供程序具有UniqueRecords选项,该选项允许在查询中省略主键字段时,自动从表中请求主键字段。

如果要打开的数据集没有唯一标识该记录的字段,可以通过使用Oracle、Firebird2.PostgreSQL和SQLite服务器作为服务器来解决这个问题。对于Oracle和SQLite服务器,您应该将RowID列添加到查询中。带Firebird2.0-DB_KEY。如果您的表是使用OID创建的,您可以使用PostgreSunidac最新动态QL服务器OID列作为键字段。

数据更新的扩展设置

对于包含来自多个表的数据的数据集,默认情况下只有一个表是可更新的。您应该在UpdatingTable属性中指定要更新的表的名称,否则属于字段列表中第一个字段的表将是可更新的。如果设置字段只读选项设置为真,自动生成的更新语句中未使用的字段将默认标记为只读。对于使用多个表、同义词、数据库链接和聚合字段的复杂查询,我们建议使用Oracle、PostgreSQL和所有基于ODBC的提供程序来启用ExtendedFieldsInfo选项。

如果插入/发布、更新或刷新操作影响多条记录,UniDAC将引发异常。为了抑制这种异常,应该将“严格更新”选项设置为“假”。

可以填写Update-SQL语句,更灵活地控制数据修改。它们由SqL插入、SqL日期、SqL删除和SqL刷新属性表示,并在插入/发布、编辑/发布、删除和刷新操作中自动执行。在设计时,可以在组件编辑器的SQLGenerator选项卡上生成默认的更新SQL语句。您可以根据需要修改生成的语句。但是,如果您为每条记录动态生成更新查询,则只有更改的值会发送到服务器。

这个功能对于某些特定情况是不够的。它可以通过TUniUpdateSQL组件进行扩展。TUniUpdateSQL允许单独的Tunis QL/tuniquery/tunisteredproc组件与每个更新操作相关联。

缓存更新

UniDAC允许在客户端缓存所谓的“CashedUpdates”,然后批量发布所有更新。这意味着在调用“发布”或“删除”后,更改不会立即反映在服务器上。调用ApplyUpdates方法后,所有缓存的更改都将发布到服务器。UpdateBatchSize选项允许您设置要同时发布的更改数量。

默认值/表达式

如果已经为数据库表中的列定义了默认值或表达式,您可以设置UniDAC,以便它从服务器请求这些表达式。表达式被分配给TField对象的DefaultExpression属性。如果填充了默认表达式值,它们将被替换。此行为由默认禁用的默认选项控制。

自动增量值生成

编辑数据集时,通常不方便手动填写关键字段值并自动生成。有三种方法可以做到这一点。

第一种方法最有用的方法是使用服务器方法自动生成关键字段值。

SQLServer、MySQL和SQLite允许在表中定义自动增量列。这不需要在客户机上进行额外的处理。需要为SAPSybaseASE、Oracle、PostgreSQL和Interbase提供程序指定特定于keysequenceInterbase的密钥生成器选项。自动生成的值会自动反映在数据集中。

第二种方法是在BeforePost事件处理程序中生成并填充关键字字段值。通常,此方法需要执行查询来从服务器检索一些信息。因此,这种方法可能只在某些特定情况下有用。

第三种方法是创建一个AFTERINSERT触发器,用适当的值填充字段。但是,返回触发器生成的值时出现问题。虽然这个问题可以解决,见下一段,这个方法被认为是非最优的。所以如果可能的话尽量选择别的方法。

但是,您可以使用特定于QueryIdentity的选项来禁用对SQLServer提供程序生成的值的检索。这将提高记录插入的性能。

及时获取最新数据

在某些情况下,UniDAC允许自动刷新数据集中的记录,以保持它们的值是最新的。

使用刷新选项,您可以在编辑之前、插入或删除之后,使UniDAC刷新当前记录。这是通过执行额外的查询来完成的。

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

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

真的.执行更新查询后,数据集读取输出参数的值,并将其放入具有相应名称的字段中。

unidac 0 1〖D7 2007 10 1 10 2 10 3〗一键安装版已XX版

使用日记

默认状态是行提交。使用前根据需要设置或属性。

默认情况不同。请注意设置属性([]),同样的情况也存在

默认情况下,一些varchar类型的字段会自动添加空格。请注意设置选项。TrimVarChar=真

4.UniQuery可能会在插入时报告错误,如果字段不能为空且前台操作未填写,请将RequiredFields设置为true

5.当5。UniQuery修改数据集,默认方式是通过关键字生成SQL语句进行数据提交。还有另外两种方法:一种是设置updatesql,另一种是设置KeyFields(详见SQL trace)

6.6的数据排序属性。UniQuery是IndexFieldNames7。数据提交顺序一定要注意:

7.数据提交顺序一定要注意:

withMyQuerydo

开始

会话。StartTransaction

尝试

.{Modifydata}

ApplyUpdates{ trytowritethupdatestothe database }

会话。提交;{onsuccess,committhechanges }

反对

RestoreUpdates{ restoreupdateresultfor applied records }

会话。回滚;{失败,撤消更改}

提高;{ raiseexceptionpreventacall to Committee date!}

结束;

CommitUpdates{onsuccess,clearthecache }

结束;

提交单个数据集:

MyQuery。ApplyUpdates

MyQuery。CommitUpdates

8.DataM提供一个函数Clone(Source,Dest):首先Dest是TVirtualTable,然后源数据集被完全复制;第二,Dest是UniQuery,就是把源的SQL复制到Dest,打开

9.9的描述。设置只读属性

1)我们经常使用多表关联,需要在前台修改数据。例如,在表A和表B中,如果两个表字段都需要在前台修改,则将ReadOnly设置为false。

2)特别注意:如果一个UniQuery。SetReadOnly设置为true,并且这个表有一个自增的ID,你在提交数据的时候会出错,跟踪SQL的时候会发现这个ID被前台传了一个null值。

10.uniquery.refreshrecord可以刷新当前选定的数据

11.我们经常在UniQuery的SQL中定义一些参数,在传递参数时需要特别注意,比如:

QExec。关闭;

QExec。SQL . text :=' select * fromYHBwheresYHBH=

_ YHBH ';

传递参数时有两种方法可以写

1)最安全的写作方式

QExec。ParamByName(' P _ YHBH '). DataType :=FtString;

QExec。ParamByName(' P _ YHBH '). paramtype :=ptin put;

高管。按名称排列参数(' p _ yhbh ')。asstring3360='张三';(您可以在此用值替换字符串)

2)我对下面的写法做了一个简单的测试,也是可以的,但是复杂的SQL参数是否正确就不得而知了

高管。按名称排列参数(' p _ yhbh ')。asstring3360='张三';(如果没有指定参数的数据类型以及传入和传出类型,则不得使用值。)

相关阅读

漫步者airpulse A100】报价数据库连接池是什么 hikaricp数据库连接池 unidacunidac最新动态使用教程 连接到数据库unidac uniDacunidac 0 1〖D7 2007 10 1 10 2 10 3〗一键安装版已XX版什么事是区块链 区块链能干嘛 数据库连接池实现 hikaricp数据库连接池 unidac使用教程 批处理操作上海盛世豪园楼市最新动态新江湾城尚景园 新江湾佳苑 unidac最新动态