三层架构之Socket

本文介绍了如何通过WinSocket创建一个三层架构的应用程序,详细讲述了服务器端和客户端的配置步骤。服务器端包括设置TADOConnection、TADODataSet和TDataSetProvider来连接SQLServer数据库。客户端则使用TSocketConnection与服务器端的RDMServer通信,并通过TClientDataSet展示数据。通过按钮控制连接和断开,实现了远程数据库的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过 WinSocket 架设三层应用程序 , 除了使用 TSocketConnection 组件外还需要 TDataSetProvider 将 两端的 DataSet 连接起来.

步骤如下:

 

Server 端:

1. 创建一个新的 Project , 命名为 SCKTServer, 同时会有一个 MainForm 窗体.

2. 添加 Remote Data Module , 命名为 RDMServer.

3. 在 RDMServer 需添加 3个数据组件:

     一个 TADOConnection , 命名为 Con1, 设置其 ConnectionString 为如下: Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=数据库名;Data Source=SqlServer服务器名; (注意因为sa密码为空,所以没有密码项).

设置LoginPrompt = False, 不需要提示输入密码.

设置Connected = True , 测试一下是否可以正常连接 SqlServer 数据库.

     一个 TADODataSet , 命名为 ds1, 设置 Connection 为 Con1;

     一个 TDataSetProvider , 命名为DSProvider, 设置 DataSet 为 ds1 ; 设置  Option 中的 poAllowCommandText = True , 意为允许 Client 端DataSet 可以 设置 Sql 语句操作数据表.

Ok , 编译运行一下 , 即注册一下服务.

 

Client 端:

1. 创建一个新的 Project , 命名为 SCKTClient, 同时会有一个 MainForm 窗体.

2. 在窗体上添加一个 TSocketConnection , 设置 Address 为服务器 IP ,这里是本机, 为 127.0.0.1; 设置 ServerName 为 Server 端数据模块, 这里是: SCKTServer.RDMServer; 因为 服务以及注册, 这里是通过列表选择出来的.

3. 在窗体上添加一个 TClientDataSet , 命名为 dsClient, 设置 ProviderName为 Server端的TDataSetProvider : DSProvider;

设置其CommandText 为 Sql 命名, 如: SELECT * FROM 数据表名

4. 以后就是和一般数据库应用程序一样, 添加 DataSource 和 DBGrid 和其他数据库组件.

5. 最后是添加连接和断开的 2个 Button 及简单代码:

procedure TForm1.btn1Click(Sender: TObject);
begin
  if dsClient.CommandText ='' then Exit;
  con1.Open;
  dsClient.Open;
end;

 

procedure TForm1.btn2Click(Sender: TObject);
begin
  con1.Close;
  dsClient.Close;
end;

 

OK, 以上基本完成.

本机测试一下, 先打开$DELPHI/Bin 下的 ScktSrvr.exe (运行于服务端), 再运行 Client 端 应用程序 , 即可通过 Socket 连接远端数据库服务.

 

基本连接线路是 : SqlServer --> ADOConnection --> ADODataSet --> DataSetProvider , 通过SocketConnection与客户端连接起来--> ClientDataSet -->DataSource --> DBGrid .

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值