问题标签 [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 投票
2 回答
1819 浏览

delphi - Delphi 2009 和 Informix dbExpress 与 Windows 2003

我有一个简单的应用程序,它使用 dbExpress 连接 Informix 数据库。如果我用 TurboDelphi 编译它,它可以在 WinXP 和 Win2003 上运行。

当我使用新的 Deplhi 2009 时,我的应用程序在 WinXP 上运行正常,但在 Win2003 上无法启动。没有错误消息框,只有事件日志中的信息:

错误应用程序 inf_dbexpress_test.exe,版本 0.0.0.0,错误模块 kernel32.dll,版本 5.2.3790.4062,错误地址 0x0000bee7。

我认为这是 dbExpress 驱动程序的问题,而我使用 ODBC 连接 Informix 的德里 2009 编译的其他应用程序在 Win2003 上工作。

任何人都可以测试来自 Delphi 2009 的 Informix dbExpress 驱动程序是否适用于 Windows 2003?


感谢您的帮助,但它不起作用。

至于$INFORMIXDIR:我重新安装了 ClientSDK 3.5,我$INFORMIXDIR现在是:

c:\informix

(是 c:\Program Files ...)。

我可以从使用 ODBC 的应用程序连接到数据库。但是 dbExpress 应用程序无法启动,即使在 WinXP 兼容模式下也是如此。


我已在 Delphi Quality Central 中将其报告为错误 #67823:

0 投票
6 回答
4978 浏览

delphi - 从 DBExpress TSQLQuery 获取字段列表

我在从程序用户在运行时定义的查询中获取字段列表时遇到问题。我让我的用户将 SQL 查询输入到备忘录控件中,然后我想让他们遍历将返回的字段并执行诸如格式化输出、汇总列值等操作。所以,我必须获取列名,以便他们有一个输入附加信息的地方。

如果没有参数我会做得很好,但我也必须让他们为查询定义过滤器参数。所以,如果我想将参数设置为null,我必须知道参数的数据类型是什么。

我使用的是 Delphi 2006。我使用 DBExpress 组件 TSQLConnection 和 TSQLQuery 连接到 Firebird 2.1 数据库。以前,我成功使用:

for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;

当我尝试使用日期参数时,我发现我遇到了问题。直到那时我的所有参数都是整数(记录 ID)只是一个巧合。事实证明 varNull 只是一个值为 1 的枚举常量,所以我得到了可接受的结果(没有记录)工作正常。

我只需要一个字段列表。也许我应该只解析 SQL 语句的 SELECT 子句。我认为将 Qry.Prepared 设置为 True 会给我一个字段列表,但没有这样的运气。它需要参数的值。

如果你有想法,我肯定很想听听。谢谢你的帮助。

0 投票
2 回答
4609 浏览

sql - Delphi DBExpress/Firebird 参数化查询中的字符串截断错误

我在 Delphi 中有一个使用 DBExpress TSQLQuery 的查询,看起来像这样

如果我运行它,当它执行 open 命令时,我会收到以下异常

在类 TDBXError 中,带有消息“算术异常、数字溢出或字符串截断”。

这是由于 AMYFIELD 中的字符串比表字段长度长,MYFIELD 是 Varchar(10),如果我将其修剪为较短的字符串,它可以正常工作,如果我像这样直接将字符串添加到 SQL 中

它工作正常,即不会抱怨截断,现在如果这是插入/更新,我想知道截断,但由于它只是用于搜索,我想停止它。

有什么办法可以告诉 DBExpress 可以截断我的字符串?或者是否有可行的解决方法

我想避免添加类似的东西

l_input := 复制(l_input,0,fieldLength-1);

因为看起来很乱,并且会使维护代码更加困难。

如果有帮助,我正在通过 interbase 驱动程序将 Delphi 2007 与 Firebird 2 一起使用?

更新:

@Erick Sasse看起来像你的权利,我在火鸟常见问题解答网站http://www.firebirdfaq.org/faq79/上找到了错误消息

@ inzKulozik LeftStr 工作正常,虽然我无法让 ActiveSQL.ParamByName('AMYFIELD').Size 工作,但这对我来说仍然很乱,而且更难维护。

我还看到了一种将 substr 添加到 SQL 的方法:类似于

再次看起来更难维护,理想情况下,我想要一个 Firebird/DBExpress 配置设置来解决这个问题,但在我找到一个之前,我会使用 inzKulozik 的解决方案,并希望表结构不会发生太大变化。

0 投票
6 回答
2108 浏览

sql-server - 是否可以使用 DBX 以编程方式创建数据库?

看起来 TSQLConnection 只连接到现有数据库,我找不到另一个允许我向数据库服务器发送命令的组件。

我将 Delphi 2009 与 Firebird 和 MSSQL 一起使用。

一个想法是连接到系统数据库(例如 MSSQL 中的 master 或 tempdb),然后将创建命令发送到服务器。这可能是 MSSQL 的一个选项,但我不确定 Firebird。

我也知道 Delphi 2009 中的新 DBX 元数据,但我找不到使用它创建数据库的方法。我发现的所有示例都是修改现有数据库。

0 投票
2 回答
5559 浏览

delphi - 在 Delphi 中使用 DBExpress 创建数据库?

我需要使用 DBExpress 以编程方式创建一个 Firebird 数据库。我已经为 SQL 服务器做到了这一点,首先连接到 Master,然后将 Create 脚本传递给查询,但是使用 Firebird 我有一点鸡和蛋的问题。

0 投票
6 回答
8719 浏览

oracle - Delphi 2009,带有 Oracle 的 DbExpress:无法加载 oci.dll

我已经设置了一个演示来测试datasnap 2009,我遇到了dbexpress的问题。

dbexpress 错误消息(在设计时或运行时相同):“无法加载 oci.dll 库(错误代码 127)。系统路径中可能缺少 OCI.dll 库。”

我正在使用 Oracle 8.0.5。oci.dll (c:\orant\BIN) 的路径位于我的系统路径中,位于该行的前面。我也安装了 Delphi 2005,完全相同的配置也可以正常工作。我已经移动了 dbexpress delphi 2005 相关文件,我已经重新启动了很多次,尝试将 oci.dll 复制到 c:\windows\system 或 c:\windows\system32\ 中,每次都出现同样的错误。

我的解决方案已经用完了。也许这是与我也安装了 D2005 的事实有关的问题......?

有人可以帮助我吗?

谢谢

编辑: 这是事件日志,在构建过程中的 IDE 中,我们可以看到它找到并加载 OCI.dll,因此错误(无法加载 oci.dll)可能不是一个好错误:

0 投票
1 回答
2360 浏览

multithreading - 线程化 DbExpress 查询

我只在 Delphi 中使用 DbExpress 组件完成了“GUI”数据库访问,但现在我想在后台执行一个查询。我读了一些 TSQLConnection 不是线程安全的,我必须为每个线程创建新连接。我看到 TSQLConnection 中有 CloneConnection,但 help 声称新连接归原始连接所有。

所以,

1) 执行位于线程数据模块上的 TSQLQuery 的正确方法是什么?

2) 我可以使用 TSQLConnection.CloneConnection 吗?我应该释放克隆的连接还是在线程结束时保持不变?

简单的示例代码(或 URL)会很有帮助。

0 投票
1 回答
2184 浏览

delphi - 如何在带有 BlackFish 的 DBx4 中使用整数自动增量字段?

我正在尝试将 dbx4 中的自动增量字段与黑鱼数据库一起使用我有一个简单的表结构:

在打开之前我正在做:

打开后:

如果我做:

或者,如果我在 DBGRID 中使用它,它会失败并出现错误:

“字段‘ID’必须有值”</p>

女巫应该已经生成了。

如果我运行 INSERT 查询,不管有没有“AutoGenerateValue := arAutoInc”行,它都可以正常工作。

我该如何克服这个问题?

0 投票
1 回答
2543 浏览

sql - 监控 Delphi 应用程序执行的 SQL 查询

我想监视我的应用程序在运行时执行的 SQL 查询。

我在 Delphi 2007 下使用 dbExpress 连接到 Oracle 11g 数据库。

这曾经可以在 BDE 下使用 sqlmon.exe 实用程序实现。

dbExpress 是否有类似的实用程序?

我尝试过 Toad SQL Monitor,它记录了两个或三个查询,然后立即挂起应用程序。我可以设置一个完整的 Oracle 跟踪,但这对于日常调试来说太过分了。

0 投票
3 回答
2730 浏览

oracle - 如何使用 dbExpress 作为 SYSDBA 连接到 Oracle 数据库?

我有一个连接到 oracle 数据库的 Delphi 应用程序。

当我尝试以 SYSDBA 身份登录时,出现以下错误:

当我尝试使用“SYS AS SYSDBA”用户登录时,出现错误:

如何使用 dbExpress 连接以 sysdba 身份登录?

另请参阅有关 ADO 的相关帖子