gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:13:15 25 4
gpt4 key购买 nike

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

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

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

据我了解,这可能是因为主机在客户端中被定义为 localhost。但这是我的第一个问题。在 TSQLConncetion 中,您可以在 Driver->Hostname 下设置主机名。我想知道的是如何在运行时执行此操作,因为当我尝试创建一个编辑框以允许用户输入值然后通过代码设置它时,我无法获取该属性,例如:

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

我使用的是 Delphi XE2

仍然有很多问题需要解决,尤其是在部署方面,但我会一点一点地解决这个问题,并且非常感谢您的建议。

最佳答案

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

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

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;

关于Delphi客户端-服务器应用程序使用Firebird 2.5嵌入连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com