问题标签 [dbexpress]

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.

0 投票
1 回答
899 浏览

delphi - TCustomClientDataset 能否以批处理模式应用更新?

我有一个连接到 Firebird 数据库的 DB Express TSimpleDataset。我刚刚向数据集添加了数千行数据,现在该调用 ApplyUpdates。

不幸的是,这会导致数千个数据库命中,因为它会INSERT单独尝试每一行。这有点令人失望。我真正想看到的是数据集生成一个包含几千条INSERT语句的事务,并一次发送整个事务。如果必须,我可以自己设置它,但首先我想知道数据集或 DBX 框架中是否有任何内置方法。

0 投票
1 回答
646 浏览

mysql - SQL 中仅显示一个字段

我在尝试从返回 2 个字段的 SQL 语句中获取字段时遇到问题

如果我在 phpMyAdmin 中运行查询,它会正确返回所有字段。这意味着 SQL 语句是正确的

如果我只使用一个字段运行 SELECT 语句,它会返回正确的信息。这意味着连接正常

这有效

这也有效,bu 只返回一个字段(id_product)。Fields.Count=1 !!!

这将返回此错误消息: 无效的字段大小

笔记

我将 Delphi 6 与从JustSoftwareSolution下载的驱动程序 dbxopenmysql50.dll 一起使用

我尝试使用 TSQLConnection、TSLDataSet 和 TSQLClientDataSet。它们三个都在同一指令中返回相同的错误消息:Componente .Open;

我做了一个简单的测试程序。以下是我用来连接和获取所需信息的主要功能。

0 投票
1 回答
384 浏览

delphi - 为 dbexpress 静态链接 firebird 驱动程序

是否可以部署使用 dbExprss 连接到 Firebird 的零 dll 可执行文件?如果是这样,怎么做?

因为我尝试包含 DBXFirebird,但可执行文件始终需要 dbxfb.dll。

谢谢你们。

0 投票
2 回答
4572 浏览

delphi - TSQLQuery - 游标未从查询返回

现在,我正在尝试摆脱 delphi 程序中的一些旧搜索代码,并且我想将搜索推送到程序正在使用的 sql-server。为此,我创建了这个查询,它与我在不同 C# 程序中使用的查询非常相似。

使用 SQL Management Studio 或从 C# 程序查询可以正常工作,但使用 Delphi 我得到“未从查询返回光标”错误。

这是查询

一件奇怪的事情是,当我删除

我没有收到“未从查询返回光标”错误。但是使用搜索字符串,我在 SQL Management Studio 中只得到 10 个结果,我在 Delphi 中得到数据库中的所有项目,就像搜索没有做任何事情一样。

This happens also in a simple test program where I just have a Form, a TSQLConnection, TSQLQuery, TDataSetProvider and a ClientDataSet.

Can someone tell me whats the problem here? Since the query works fine in other environments, I think it should be OK.

Many thanks for any help.

0 投票
1 回答
426 浏览

delphi - TDBGrid - 同步或显示问题

我在我的一个程序中遇到了一个非常奇怪的问题。我有一个后跟TSQLConnection两个TSQLQUery,TDataSetProvider和. 它是一个主从结构。TClientDataSetTDataSource

详细查询的TDataSource附加列具有主查询的一个查找属性。(想想像“ProductID、ProductName、GroupName”这样的东西,其中 GroupName 来自主查询)

然后我有一个 DBGrid,它具有TDataSource作为源的详细查询。它正确显示了大部分部分,但从主查询中查找的字段有时不显示。有时意味着在这种情况下,我在 DBGrid 中向下滚动,然后再向上滚动,然后它就消失了。我再向下和向上滚动一次,它显示出来了。

为了调试,我添加了一个TDBLookupComboBox与 DBGrid 相同的源,但 ComboBox 始终显示该字段的正确值。

感谢您对这个问题的任何帮助。

0 投票
1 回答
673 浏览

delphi - DBXPool 在连接失败时损坏内存

DBXPool用于DelegateConnectionon aTSQLConnection时,如果调用该TSQLConnection.Open方法时 SQLServer 不可用,则第一次超时。但是,如果您随后Open再次调用,它将行为不端。在我的生产服务中,它会在没有任何警告的情况下终止进程——没有引发异常,什么也没有。这个过程就消失了......在我为 test 创建的一个简单应用程序中DBXPool,它认为TSQLConnection是连接的,即使它不是。

有没有人遇到过可以提供任何建议的DBXPoolas a 的问题?DelegateConnection

谢谢!

<<< 7/23 编辑 #2 >>>

我使用下面编辑#1 中的代码来跟踪 DBX 框架。只有在使用 DBXPool 时才会调用以下方法:

(单位 DBXDelegate)

...它调用以下方法,无论是否使用 DBXPool 都会调用该方法:

(单位 DBXCommon)

注意评论。当发生异常时(例如,错误的用户名或超时等),只有在不使用 DBXPool 时才会调用以下代码。

(单位 DBXCommon)

因为FOpen没有设置回False使用 DBXPool 的时间,所以它会导致执行不应该在下次DerivedOpen调用时执行的代码,从而导致 AccessViolation 和内存损坏。有时 RTL 会捕捉到它,有时不会(例如,我的生产服务被 Windows 杀死了)。我还没有能够更深入地跟踪 DBXDelegate 以确定它为什么没有捕获异常并调用TDBXConnection.Close.

<<< 7/23 编辑 #1 >>>

根据 Ken 的建议,我附上了简单的示例应用程序。我的服务应用程序就死了。此应用程序在 dbxmss.dll(今天)中显示访问冲突。昨天它没有在第二次点击时引发异常,它只是将“已连接”返回为 True。对我来说似乎是内存损坏......

在有或没有 SQLServer 的机器上构建和运行应用程序。单击每个按钮几次。两者都在第一次单击时返回错误。'With DBXPool' 会认为它从第二次点击开始连接。如果幸运的话,您可能会看到 AV。'W/O DBXPool' 按钮每次都会失败,这是正确的。

项目1.dpr

单元1.dfm

单元1.pas

0 投票
1 回答
1690 浏览

delphi - Delphi 2010:Firebird dbExpress 错误无法加载 dbxfb4d14.dll

我刚刚从这个谷歌代码网站下载了Chee-Yang Chau的dbExpress Driver for Firebird

我加载了 Delphi 2010 演示项目并尝试运行它并立即得到一个无法加载 dll 的错误:

dbxfb4dl14.dll 错误

INI 文件

p>

德尔福代码

我注意到 ini 文件中的库名称dbxfb4d14.dll与实际的 dll 名称dbxfb4d15.dll不匹配,因此我修改了 ini 文件,使其与 dll 的名称匹配。

现在我收到一条错误消息,提示找不到 dbxfb4d15.dll

dbxfb4d15 错误

我究竟做错了什么?

0 投票
2 回答
1027 浏览

delphi - 如何在 TDataSet.UpdateRecord 中捕获错误?

我的应用程序使用 QuantumGrid (v6.56) 和 TSimpleDataSet 作为其数据源。

问题:如果用户在数字字段中输入非数字值,则会引发异常。代码未到达 OnBeforePost 处理程序。

如果在OnBeforePost之前抛出异常,应用程序如何捕获错误(并向用户显示消息) ?


堆栈跟踪:

0 投票
1 回答
1513 浏览

mysql - Connecting to MySQL via SSL, using DBExpress

I want to connect to a MySQL server via SSL. More specifically, I want to do that with DbExpress.

I've used SSL to MySQL via ZeosLib in the past. That worked great, but Zeos doesn't let me run stored procedures that return more than one resultset, which is a show-stopper in this project.

With Zeos, I used to set up an SSL connection like this:

I see that you can do something similar with DBX:

I see that you can set up a parameter called 'encrypted', but I don't see how I can configure the locations of the certificates. LibMySQL.dll needs those in order to set up its encrypted connection.

So my questions are:

  1. Does DBX allow me to set up an encrypted connetion?
  2. If so, can anyone tell me how to do that? :)
0 投票
2 回答
1172 浏览

delphi - dbExpress 设计问题

有谁知道(或想知道)为什么 TSqlDataset 有一个 commandtext属性(字符串)而 TSqlQuery 有一个sql属性(tstrings)?

考虑sql语句

如果我使用 TSqlQuery,那么我可以通过访问 sql[1] 动态更改查询中的表名,但如果我使用的是 TSqlDataset(如果我需要双向数据集,我必须这样做,数据集连接到提供程序然后到 tclientdataset),我必须逐字设置命令文本字符串。虽然上面的例子很简单,但当 sql 语句涉及更多时,它可能会成为一个问题。

更新:从到目前为止的评论和答案来看,我似乎被误解了。我不太关心提高组件的运行时性能(当查询需要一秒钟时,一毫秒有什么关系),但我确实关心程序员(即我)和维护程序的能力。在现实生活中,我有以下存储在 TSqlQuery 中的查询:

我没有计算字符串中的字符数,但我确定超过 255 个,因此排除了将查询存储在简单字符串中。在某些情况下,我想通过添加行“and statuses.id = 3”或“and customers.id = 249”来过滤显示的数据量。如果查询存储为 TStrings,那么我可以在基本查询中添加虚拟行“and 1 = 1”,然后根据需要更新该行。但是查询是一个长字符串,我无法轻松访问它的结尾。

我目前正在做的(代替更好的解决方案)是创建另一个 TSqlDataSet,并将其命令文本设置为默认的 TSqlDataSet 的命令文本,同时附加额外的条件。