You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi中用FireDAC与DataSnap实现客户端连服务器并在TDBGrid展示数据

在Delphi客户端通过FireDAC+DataSnap连接服务器并展示数据到TDBGrid

一、搭建DataSnap服务器(含FireDAC数据库连接)

1. 创建DataSnap服务器项目

打开Delphi,选择「File > New > Other > DataSnap > DataSnap Server」,选VCL应用作为服务器载体,通信协议默认选TCP/IP(端口可自行修改,默认211),完成项目创建。

2. 配置服务器端FireDAC数据库连接

  • 在服务器主窗体添加TFDConnection组件,设置DriverID为你的数据库类型(如MSSQL、MySQL、SQLite)。
  • 在Params里配置数据库连接参数:服务器地址、库名、用户名、密码等,点击「Test Connection」确认能正常连接目标数据库。
  • 可将FDConnection的Connected设为True,或在代码中按需打开连接。

3. 编写服务器端数据获取方法

打开自动生成的ServerMethodsUnit1.pas,添加返回数据集的方法:

function TServerMethods1.GetCustomerData: TFDMemTable;
begin
  Result := TFDMemTable.Create(nil);
  try
    // 从数据库查询数据并加载到FDMemTable
    FDConnection1.ExecSQL('SELECT * FROM Customers', [], Result);
    Result.Active := True;
  except
    Result.Free;
    raise;
  end;
end;

替换Customers为你服务器端数据库的实际表名,SQL语句可按需调整。

4. 启动服务器

运行服务器项目,确保控制台/窗体显示服务已正常启动,监听端口可访问。

二、客户端配置与数据展示

1. 创建客户端VCL项目

新建VCL应用,在主窗体添加TDBGrid、TDataSource控件。

2. 添加DataSnap客户端连接组件

  • 添加TDSConnection组件,设置ServerName为服务器IP+端口(如192.168.1.100:211),Driver选择DataSnap。
  • 点击「Connect」测试与服务器的连接,确保连接成功。

3. 生成客户端代理类

右键TDSConnection组件,选择「Generate Client Classes」,生成对应服务器方法的客户端代理单元(如ServerMethodsClient.pas),并将其加入客户端项目。

4. 编写客户端数据获取代码

在窗体添加按钮(如Button1),点击事件中调用服务器方法并绑定数据:

procedure TForm1.Button1Click(Sender: TObject);
var
  ServerProxy: TServerMethods1Client;
  DataTable: TFDMemTable;
begin
  // 初始化服务器代理
  ServerProxy := TServerMethods1Client.Create(DSConnection1.DBXConnection);
  try
    // 调用服务器方法获取数据
    DataTable := ServerProxy.GetCustomerData;
    try
      // 绑定数据集到DataSource,DBGrid自动展示数据
      DataSource1.DataSet := DataTable;
      DBGrid1.Columns.AutoFill; // 自动适配列宽
    except
      DataTable.Free;
      raise;
    end;
  finally
    ServerProxy.Free;
  end;
end;

5. 运行客户端测试

点击客户端按钮,服务器端数据会自动加载并显示在TDBGrid中。

关键注意事项

  • 确保服务器端防火墙开放DataSnap使用的端口(默认211),否则客户端无法连接。
  • 服务器端ServerMethods类的方法需支持序列化,TFDMemTable是DataSnap兼容的数据集类型,可直接返回。
  • 若需客户端持久化数据,可将TFDMemTable数据保存到本地FDConnection,或直接用FDQuery调用服务器方法(需确保方法已注册为可执行的存储过程)。

内容的提问来源于stack exchange,提问作者sh sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:46:28