Delphi客户端服务器应用程序使用Firebird 2.5嵌入式连接错误

Delphi客户端服务器应用程序使用Firebird 2.5嵌入式连接错误,delphi,firebird,Delphi,Firebird,我有一个很长的问题要问。首先,对于Delphi编程,我还是个新手,我的经验主要是使用ADO和Access数据库开发小型单用户数据库应用程序 我现在需要转换到客户机-服务器应用程序,这就是问题的开始。我决定使用Firebird 2.5 Embedded作为我的数据库,因为它是开源的,可以与Delphi中的interbase组件一起使用,并且多个客户端可以同时访问数据库。所以我遵循了Delphi中的interbase教程。我设法将客户机连接到服务器,并查看示例中的数据(虽然两者都在我的电脑上运行),

我有一个很长的问题要问。首先,对于Delphi编程,我还是个新手,我的经验主要是使用ADO和Access数据库开发小型单用户数据库应用程序

我现在需要转换到客户机-服务器应用程序,这就是问题的开始。我决定使用Firebird 2.5 Embedded作为我的数据库,因为它是开源的,可以与Delphi中的interbase组件一起使用,并且多个客户端可以同时访问数据库。所以我遵循了Delphi中的interbase教程。我设法将客户机连接到服务器,并查看示例中的数据(虽然两者都在我的电脑上运行),但当我尝试将客户机移动到另一台电脑上,将服务器保持在我的电脑上,并运行它以查看是否可以连接到服务器时,出现以下错误

0029DCAC处的clientDemo.exe模块中出现异常EIdSocketError。套接字错误#10061连接被拒绝

我理解这可能是因为主机在客户端中定义为localhost。但这是我的第一个问题。在TSQLConcetion中,您可以在驱动程序->主机名下设置模具主机名。我想知道的是,在运行时如何做到这一点,因为当我尝试创建一个编辑框以允许用户输入值,然后通过如下代码进行设置时,我无法获取属性:

SQLConncetion1.Driver.Hostname:=edtHost.text; 这不能通过这种方式完成,我认为您可以设置主机名的唯一方法是使用object inspector,但这在运行时不可用,我需要在程序第一次运行时在客户端上设置主机名,因此如何在运行时设置主机名/IP地址

我正在使用delphixe2


仍然有很多问题需要解决,尤其是在部署方面,但我会逐一回答,我非常感谢您的建议。

嵌入式系统不能被多个用户同时使用(即使它是同一台机器上的两个应用程序)。有关三个版本之间差异的信息,请参阅。另一个版本中也有一些信息可能会有所帮助

就在运行时指定服务器而言,这可能有助于:

procedure TForm1.Button1Click(Sender: TObject);
var 
 Conn: TSQLConnection;
begin
  Conn := TSQLConnection.Create(Self);
  try
    Conn.DriverName := 'FirebirdConnection';
    Conn.Params.Add('User_Name=SYSDBA');
    Conn.Params.Add('Password=masterkey');

    // Replace the dbname in the next line with the
    // value obtained at runtime, as  in
    // Conn.Params.Add('Database=' + YourNewPathAndDBName);
    Conn.Params.Add('Database=C:\FireBirdData\YourDB.fdb');

    Conn.Open;
    if Conn.Connected then
      ShowMessage('Connection successfully made to DB');
  finally
    Conn.Free;
  end;
end;

感谢上面的代码,但是您不必同时设置主机名以便客户端知道在哪里查找服务器吗?或者必须将主机名命名为localhost?对于嵌入式,不需要主机名,因为一次只能由一个应用程序/连接访问。请访问我提供的第一个链接,了解三种FireBird服务器(经典型、超级服务器和嵌入式)之间的差异;有一个表解释了它们之间的区别。@Japster看一下这里我没有使用firebird,但我相信“Datasource=IP地址”需要添加为parameter@Dorin,不适用于嵌入式。我发布的代码可以很好地连接,没有任何IP地址。感谢上面的建议,我会尝试一下,然后带着更多的问题回来。不要重新发明轮子。我们的开放源码客户机-服务器ORM具有面向服务的体系结构,使用JSON和SQLite3命名。至少值得一看代码或阅读700页的文档,以获得一些设计或实现想法。