通过 dBExpress 连接到本地服务器

Connecting to local server via dBExpress

我的 D7 dBExpress 项目应该连接到本地 Interbase XE7 服务器。 它具有通常的 DBX 设置:SqlConnection、SqlQuery、DataSetProvider 和 ClientDataSet 并做一个简单的 'select * from mytable'.

我上次使用它时,它工作正常,但今天当我 运行 它在 IDE 中时, 我在调用

时遇到异常
ClientDataSet1.Open;

在我的 FormCreate 中(该调用是项目的全部代码,顺便说一句)。这 异常是带有 msg "No mapping for Error Code Found." 的 EDatabaseError,发生在 TSqlConnection.DoConnect

这听起来很熟悉 - 我自己也遇到过一次这个错误,当时我在几周后回到 IB 项目。

事实证明,在此期间,某些东西偷偷将 Firebird 偷偷带到了我的机器上,它劫持了 IB 通常侦听的端口,实际上是这台 FB 服务器拒绝了连接,而不是 Interbase 服务器!

查看服务下是否有FB服务器运行。如果有,请将其关闭(当然,如果尚未 运行,则启动 IB 服务器)。然后再次尝试您的 DBX 项目。

在 IB 文档的某个地方,我发现了一些似乎暗示有一种方法可以让 FB 和 IB 服务器共存的方法,但是为了避免再次陷入类似的陷阱,我写了几个批处理文件来关闭其中一个并启动另一个。一个叫做 "UseIB" 并且包含:

net stop "Firebird server - DefaultInstance"
net start "InterBase XE7 Server gds_db"

另一个,"UseFB"当然正好相反