Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Rad Studio开发环境中将Delphi 10.1连接到Interbase XE7桌面_Delphi_Database Connection_Interbase_Delphi 10.1 Berlin - Fatal编程技术网

在Rad Studio开发环境中将Delphi 10.1连接到Interbase XE7桌面

在Rad Studio开发环境中将Delphi 10.1连接到Interbase XE7桌面,delphi,database-connection,interbase,delphi-10.1-berlin,Delphi,Database Connection,Interbase,Delphi 10.1 Berlin,我想在我的开发环境中使用ibxe7的桌面版本,但无法使连接正常工作 最初的应用程序使用了IB的完整服务器版本,我现在想在成本较低的单PC类型应用程序上运行该应用程序,并选择了IB桌面版本 Rad Studio 10.1 Berlin正在W7 64位虚拟机上运行。 FireDac是数据库连接组件。 IB XE7 Desktop是开发PC上的数据库服务器 应用程序的目标是一个W7 32位的VM,该VM上有另一个IB XE7桌面 我可以构建32位应用程序,在将FireDac连接组件协议字段改为“本地”

我想在我的开发环境中使用ibxe7的桌面版本,但无法使连接正常工作

最初的应用程序使用了IB的完整服务器版本,我现在想在成本较低的单PC类型应用程序上运行该应用程序,并选择了IB桌面版本

Rad Studio 10.1 Berlin正在W7 64位虚拟机上运行。 FireDac是数据库连接组件。 IB XE7 Desktop是开发PC上的数据库服务器

应用程序的目标是一个W7 32位的VM,该VM上有另一个IB XE7桌面

我可以构建32位应用程序,在将FireDac连接组件协议字段改为“本地”而不是TCP/IP后,它将连接到目标PC上的IB XE7桌面(在VM中运行W7 32位),我在堆栈溢出中读取到这一点

我无法工作的是开发环境中的数据库连接

我首先安装了64位版本的IB,然后将其删除,并尝试了32位版本,结果相同

在线阅读了一些连接问题后,我尝试将“gds_db”和“localhost/gds_db”放在服务器名称字段中,但仍然不起作用,尽管它确实改变了错误


错误-服务器名称中没有任何内容


[FireDAC][Phys][IB]数据库不可用



将“gds_db”放入服务器名称后出错


[FireDAC][Phys][IB]无法完成对主机“gds_db”的网络请求

找不到主机

在主机文件或域名服务中找不到指定的名称


首先尝试安装64位IB,然后删除找到的所有gsd文件和注册表项,然后安装32位版本。问题仍然存在

注意:Database Workbench 5将OK连接到同一VM上的数据库

欢迎任何意见

谢谢


James F.

我记得让Delphi XE8+Seattle与IB XE7一起工作是一个相当不错的表现, 特别是,我在尝试从连接时不断遇到“不可用数据库”错误 在IDE内部。注意:以下是我发现让Delphi使用完整IB XE7包的本地实例所必需的内容。开发人员版本和桌面版本的要求可能非常不同,希望在文档中解释

需要检查的内容包括:

  • 在Windows服务应用程序中检查服务器是否正在运行

    我的服务器显示为

    Interbase XE7服务器gds_db

  • 如您所见,服务应用程序应该告诉您服务器的名称

  • 如果您想通过TPC/IP连接到它,请检查您是否有条目 在\windows\system32\drivers\etc\service文件中,如下所示

    gds_db 3050/tcp#跨数据库服务器

    哈希符号开发人员_ibxe73054/tcp#InterBase服务器

  • 包含developer_ibxe7的行应该以#开头,但由于某些原因,因此不会显示该行。无论如何,这一行被注释掉了,因为它指的是我在某个时候安装的开发人员版本

  • 检查您的操作系统环境是否包含这样的条目

    INTERBASE=d:\ibxe7

  • 如果不是,请添加它并重新启动计算机

    在我的例子中,d:\ibxe7是我安装ibxe7的顶级文件夹

    设置/选中这些内容后,在IDE中启动一个新的Delphi项目,向其中添加一个IBConnection,并将其
    DatabaseName
    设置为本地IB数据库。对我来说

    本地主机:D:\Delphi\Interbase\Databases\MA.GDB

    很好。然后,查看是否可以将Connected属性设置为True。如果你不能,
    请留下评论,我看看还能记得什么。

    有两件事:a)您需要检查服务器的实际实例名称。iirc,IB的“锯切”版本使用gds_db以外的东西。b) 查看\windows\system32\drivers\etc中的
    services
    文件。它应该包含一个类似于“gds_db 3050/tcp#InterBase Server”的条目,用于命名服务器实例。顺便说一句,您可以尝试使用IBX组件获取连接。我可以通过将IBConnection的数据库名称设置为“LocalHost:D:\Delphi\Interbase\Databases\MA.GDB”来连接到本地IB XE7服务器。GDB是一个错误的文件扩展名,以winXP@Arioch记者:也许,但是在Win10中对我来说效果很好。等待第一次操作系统崩溃-然后它将用存档的数据库文件覆盖你的数据库文件。embarcadero.com/ru/products/interbase/product-editions明确声称Desktop Edition没有独立的“TCP侦听服务器”@JamesFergus:很高兴你让它工作了,但是有什么变化在您的设置中起到了作用?在确认它被列在服务文件中并用#注释开发人员版本之后,我尝试打开/激活连接,但失败了。然后我重新启动操作系统,以防文件被读取到内存中。在此阶段,FireDac连接组件将服务器字段设置为gds_db,连接失败。然后我清除了服务器字段,连接可以成功切换到活动状态。在确认它已列在服务文件中并用#注释开发人员版本后,我尝试打开/激活连接,但失败。然后我重新启动操作系统,以防文件被读取到内存中。在此阶段,FireDac连接组件将服务器字段设置为gds_db,连接失败。我那么cleared@JamesFergus:那么,服务器字段在成功连接后设置为什么?