如何在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
相关产品推荐
相关产品推荐

