Delphi 6 -> Delphi 2006 dbexpress 怪异?

Posted

技术标签:

【中文标题】Delphi 6 -> Delphi 2006 dbexpress 怪异?【英文标题】:Delphi 6 -> Delphi 2006 dbexpress weirdness? 【发布时间】:2009-08-28 10:17:51 【问题描述】:

我有一个旧应用程序(用 Delphi 6 编写)必须移植到 Delphi 2006(更新 2)。该应用程序使用 DBExpress 连接到 Interbase 6.x 数据库,但新版本需要连接到 Firebird 2.x 超级服务器。

移植顺利,没有真正的问题。但是现在,当我尝试从移植的应用程序连接到新的 Firebird 服务器时,我收到以下错误:

数据库错误 数据库服务器错误:没有获取操作的当前记录

运行使用 Delphi 6 编译的同一个应用程序,与同一个 Firebird 服务器通信运行良好。在 Delphi 2006 中编译应用程序所需的更改与数据库代码无关——所有本地库的东西。该应用程序使用 TSQLDataset en datasetproviders 和 clientdatasets。

有人知道如何或为什么吗?对可能导致此行为的 DBExpress 的任何更改? 谢谢。

【问题讨论】:

【参考方案1】:

我认为 Delphi 2006 本身并不支持 Firebird。认为需要安装FIBPlus

下面是 Delphi 2006 支持的列表:

Old driver      New driver      Database and Version

dbexpinf.dll    dbxinf30.dll    Interbase 7.5
dbexpora.dll    dbxora30.dll    Oracle 10g
dbexpdb2.dll    dbxdb230.dll    db2 UDB 8.x
dbexpmss.dll    dbxmss30.dll    MSSQL 2000
dbexpmys.dll    dbxmys30.dll    mysql 4.0.24
dbexpasa.dll    dbxasa30.dll    Adaptive Sybase Anywhere 9
dbexpase.dll    dbxase30.dll    Sybase 12.5
dbexpinf.dll    dbxinf30.dll    Informix 9.x

摘自Here

【讨论】:

James,切换到 FIBPlus 需要我替换很多数据集组件,并重写我们的方法的广泛列表以对这些数据集执行标准操作。现在,这是我想尽可能推迟的一种选择。希望有一个使用标准 Delphi 组件的(更简单的)解决方案。但我会记住 FIBPlus。感谢您的回答。 ...阿扬...【参考方案2】:

Until Delphi 2010,内置的 DBExpress 驱动程序官方从未支持 FireBird。 在实践中,很多组合根本不起作用。

要么:

寻找正式支持 FireBird (search google) 的 DBExpress 驱动程序, 或转移到另一个数据库中间层(James 建议的 FIBPlus 非常好)。

--杰罗恩

【讨论】:

【参考方案3】:

首先,从一个新的 1-form 应用程序(放置 SQLConnection、SQLQuery 等)重试相同的步骤,填写您想要的 SQL 并尝试连接。

我相信有一些连接参数在版本之间发生了变化,因为我使用 D2006 DBexpress 成功访问了 Firebird 2.x。但不是移植应用程序,而是新项目。

【讨论】:

以上是关于Delphi 6 -> Delphi 2006 dbexpress 怪异?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 200XXE中如何用并行实现循环的计算

Delphi 启动的动画效果函数AnimateWindow(Handle,200,AW_CENTER);

delphi Canvas画线问题

delphi多线程怎么解决数据处理速度跟不上数据接收的速度?

将 Delphi 6 第三方组件添加到 Delphi 2010?

200分,在线等,delphi 用webbrowser提交没有id和name的textarea表单