我有一个冗长的问题要问.首先,在Delphi编程方面,我还是非常新的,我的经验主要是使用ADO和Access数据库开发小型单用户数据库应用程序.
我现在需要转换到客户端服务器应用程序,这就是问题开始的地方.我决定使用Firebird 2.5作为我的数据库,因为它是开源的,它可以与Delphi中的interbase组件一起使用,并且多个客户端可以同时访问数据库.所以我遵循了Delphi中的interbase教程.我设法将客户端连接到服务器并查看示例中的数据(虽然两者都在我的电脑上运行),但是当我试图将客户端移动到另一台PC时,将服务器保持在我的状态并运行它以查看是否我可以连接到它给我的服务器以下错误.
0029DCAC模块clientDemo.exe中的异常EIdSocketError.套接字错误#10061连接被拒绝.
我知道这可能是因为主机在客户端中被定义为localhost.但这是我的第一个问题.在TSQLConncetion中,您可以在Driver-> Hostname下设置die hostname.我想知道的是你是如何在运行时这样做的,因为当我尝试创建一个编辑框以允许用户输入值然后通过代码设置它时,我无法获取属性,例如:
SQLConncetion1.Driver.Hostname:= edtHost.text; 这不能通过这种方式完成,我看到你可以设置主机名的唯一方法是使用对象检查器,但是在运行时这是不可用的,我需要在程序第一次运行时在客户端上设置主机名,所以如何在运行时设置主机名/ IP地址?
我正在使用Delphi XE2
在部署方面还有很多问题需要解决,但我会逐一采用这一点,我很欣赏这些建议.
嵌入式不能被多个用户同时使用(即使是同一台机器上的两个应用程序)。有关三个版本之间差异的信息,请参阅此处。另一个SO 问题中也有可能有帮助的信息。
至于在运行时指定服务器,这可能会有所帮助:
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;
Run Code Online (Sandbox Code Playgroud)