问题标签 [unidac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Unidac 5.0 性能下降
我们从 UniDAC 4.1 迁移到 5.0(简单地重建或使用新版本的应用程序)并在我们的数据泵例程中发现了巨大的退化。
运行 pgfouine 会捕获许多查询,例如:
对于 210,000 次数据插入,它执行超过 1,100,000 次。为什么会发生它以及如何在当前版本中避免它?
我们在插入循环之前执行一次 TUniQuery.Prepare 并在内部重新分配查询参数。在 UniDAC 4.1 上它工作正常。
UPD。搜索最小可复制应用程序/数据库我发现,如果我们在表中使用域数据类型,就会发生这种情况。
最小应用:
如果使用通常的数据类型,一切都可以。
UPD2:
来自 DevArt 的回答:
感谢您的信息。我们已经重现了该问题并正在对其进行调查。一旦我们有任何结果,我们会立即通知您。
delphi - Delphi编辑unicode表数据
我的 Delphi 应用程序使用 PostgreSQL 数据库(带有 UniDac 组件)。数据以 UTF8 格式存储在数据库中。要读取国际字符,我使用这个处理程序:
但是,如何将数据存储回数据库?我创建了另一个处理程序,OnSetText
,Sender.AsString := Utf8Encode (Text);
但它不工作。
怎么可能做到这一点?谢谢。
delphi - 在 Delphi XE2 上使用 UniDac 的 PostgreSQL 串行(自动增量)
我正在使用 UniDAC 将我们的 Delphi XE2 应用程序从 MSSQL(使用 ADO 组件)迁移到 PostgreSQL。
在数据库中,有一些serial
类型字段(自动增量)。当我追加记录时,我没有将任何数据放入此自动增量字段。以前,使用 MSSQL/ADO 它会自动工作,但现在我有一个例外。
编码:
例外是:
字段 'id' 是TIntegerField
,而不是 TAutoIncrementField。
顺便说一句,如果我使用 DBGrid 编辑功能(确切地说,我使用的是 ExpressQuantumGrid),将记录附加到具有相同结构的另一个表中,一切正常。
怎么可能解决?谢谢。
mysql - 避免死锁 MySQL/UniDAC/Delphi
我在 2 个访问 MySQL 数据库的应用程序中使用 UniDAC (Devart)。在一个应用程序进行一些繁重的更新更新操作期间,有时我会在另一个应用程序中收到错误“#40001 Deadlock found when trying to get lock; try restarting transaction”。在阅读了 MySQL 处理此问题的技巧后,他们说要重试事务。我的问题是知道在 Delphi 中执行此操作的最佳方法。我正在这样做:
对两个应用程序上的每笔交易都这样做是解决问题的有效方法吗?谁能分享一个最好的方法?欢迎任何帮助。
mysql - 检查 MySQL 中的活动事务
有没有办法使用 MySQL + UniConnection 在任何给定时间检查活动事务的数量(在数据库上,而不是在本地 UniConnection 组件上)?
我试图避免扩展操作导致死锁,这样我可以让一个应用程序等待,直到没有从另一个应用程序执行的正在进行的活动事务进入同一个数据库。
delphi - Delphi Unicode 字符串不匹配
我有一个通过 BDE 使用 Paradox 数据库的 Delphi 7 应用程序,我已将其转换为 Delphi XE3 和 Firebird。Paradox 数据库中有一个字符串字段,其中包含一个加密字符串,据称该字符串用于软件许可。问题是,虽然在旧程序 (D7/Paradox) 中读取此字符串的例程运行良好,但在新程序 (XE3/Firebird) 中,该例程会引发错误。我通过调试发现的原因是从数据库中读取的字符串不同。我怎样才能解决这个问题?
旧 Paradox 数据库中的字符串:
Ng-DrLrDOtfâtD89D1'D'îu
新 Firebird 数据库中的字符串:
Ng-DrLrDOtfâtD89D1'D'îu
正如您在上面看到的,两个数据库中的字符串是相同的。
在新的 Delphi XE3 程序中,当我尝试使用 FieldByName('fieldname').AsString 获取字段的值时,使用 UniDAC 数据访问组件,这是返回的内容:
Ng-DrLrDOtfâtD89D1'D'îu
你可以看到有几个字符是不同的。这导致在程序中检查此字符串的例程中出现错误。你以前有过这种经历吗?这个问题的可能原因是什么,我可以采取哪些步骤来解决这个问题。
注 1:我使用我在 Delphi 中编写的转换器将 Paradox 数据库转换为 Firebird(有关此转换器的实际代码,请参阅:http: //goo.gl/6xu2ST)
注意 2:我使用 DEFAULT CHARACTER SET UTF8 创建了数据库,并且 UniDAC 连接组件 (TUniConnection) 已将 SpecificOptions CharSet 设置为“UTF8”。
delphi - PostgreSQL 上的 UniDac:插入后串行(自动增量)字段没有值
在我的应用程序中,用户可以向数据库添加一些记录。我正在使用 UniDac 4.6.12 组件。
对于自动增量字段,我们使用的是serial
PostgreSQL 类型,我没有在我的应用程序中触及该字段的值。但是,在Post
记录之后,字段的值为 0。此外,我从以下位置得到 0:
如果我刷新数据集,记录会出现填充序列字段值,但这对用户来说不是很舒服,因为表有很多记录,并且要获取一些记录才能工作,用户需要设置很多过滤器。
我使用数据集的这种属性:
有可能解决这个问题吗?
delphi - 重复查询大表的最快方法
我有一个包含 5000 万条记录的表,但结构紧凑(id、int1、int1、int2、int3)。所有相关指标均已实施。
对于每次用户交互,我需要查询大约 50 次。这大约需要 5 秒,使用针对 db 服务器的常规准备查询。所有查询都是简单的选择。
我的问题是:我能做些什么来加快速度,甚至花费更多的内存?查询的 Locate 方法不够灵活,直接在查询中使用过滤器很慢。
我正在运行的主要查询是
任何人都可以提出一个策略吗?TVirtualTable 会提高速度吗?
delphi - Unidac (delphi) 宏问题
我有疑问:
德尔福代码:
我收到这样的错误:
问题2)
显示消息(sql.text);结果是“从表 1 中选择 ¯o1,其中 ¯o2”,但我希望“选择 field1 作为测试,从表 1 中选择 field2,其中 test=1”
宏替换后如何获取 sql.text。
(对不起,英语不好)。
最好的问候,努里
mysql - 如何启用 UTF-8 到 Unicode 的翻译?
我有以下问题:
当我执行查询时,所有内容都正确写入表中,除了Chinese
字符和Cyrillic
字符仅在表字段“???????”中显示。
是否可以选择更改 unidac 组件或 mysql 服务器中的字符集?