4.4 客户端实现SQL 查询
由于在客户端不存在TQuery控件,似乎客户服务器模式是无法做SQL查询的。但是,Delphi很好的解决了这个问题。事实上,只要客户端连接上服务端应用程序,客户端的TClientDataSet就包含了一个名字为Provider的属性,对应到服务器端DataSetProvider的所有默认属性和方法,其中DataSetProvider有一个Options属性,只要让其中的poAllowCommandText=true, 那么,DataSetProvider的poAllowCommandText就可以接受前台来的SQL 命令,并传送给TQuery。本文来自优.文~论^文·网原文请找腾讯3249'114
可以看出,真正传递数据的是DataSetProvider的接口,所以,用这个接口搭建传递SQL 的桥梁是必需的。客户端进行SQL 查询的方法是:
ClientDataSet.Close;
ClientDataSet.CommandText := 'SQL语句';
ClientDataSet.Open;
4.5 动态连接应用程序服务器的实现
客户端程序在运行时,需要连接应用服务器程序以取得服务。但是,在系统实际应用的时候,运行应用服务器程序的计算机是经常改变的,因此在客户端程序启动时,应该先找到运行应用服务器程序的计算机的设置。动态连接应用服务器的流程类似于12.3节的动态数据库连接,动态连接应用服务器程序的流程图14-1所示。
掌握了动态连接应用服务器的流程,就可以具体实现它。下面就将分步骤介绍动态连接应用服务器的实现过程。
(1) 在Delphi中新建一个窗体,将单元文件保存为connect.pas窗体的Name属性设为fm_serconfig,Caption属性设为”服务器配置”,运行后窗体如下图所示。
(2) 在“连接设置”窗体中,需要输入应用服务器主机名(或者应用服务器IP地址)和应用服务器的端口号,
论文网http://www.youerw.com/ 这些配置信息将用来连接应用服务器。如果连接成功,输入的配置信息将被写入到注册表中,以后程序启动时,读取注册表配置信息,就可而已连接应用服务器程序了。程序的具体实现部分如程序清单如下所示。
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
procedure WriteToReg(const bappHost,bappIp,aPort:string);
{ Private declarations }
public
{ Public declarations }
end;
var
fm_SerConfig: Tfm_SerConfig; Connected: boolean= false; //代表是否连接成功
implementation
uses netlist, data;
{$R *.dfm}
procedure Tfm_SerConfig.BitBtn1Click(Sender: TObject);
begin
if ((Edt_host.Text='') or (Edt_host.Text=null))
and((Edt_ip.Text='') or (Edt_host.Text=null)) then
begin
application.MessageBox('请输入服务器和IP','输入错误',
mb_iconinformation + mb_defbutton1);
exit;本文来自优.文~论^文·网原文请找腾讯324,9114
end;
try
strtoint(edt_Port.text);
except
Application.MessageBox('请输入正确的端口号', '输入错误..', mb_iconinformation + mb_defbutton1);
exit;
end;
statusbar1.Panels[0].Text:='正在连接服务器,pleale wait';
statusbar1.Refresh;
screen.Cursor:=crHourGlass;
fm_data.Socket.Connected:=false;
fm_data.Socket.Host:=edt_host.Text;
fm_data.Socket.Address:=edt_ip.Text;
fm_data.Socket.Port:=strtoint(edt_port.Text);
try
screen.Cursor:=crdefault;
fm_data.Socket.Connected:=true;
application.MessageBox('连接成功','图书管理系统', mb_iconinformation + mb_defbutton1);
connected:=true;
except
screen.Cursor:=crdefault;
application.MessageBox('连接失败','图书管理系统',mb_iconinformation+mb_defbutton1);
connected:=false; end;
上一页 [1] [2] [3] [4] [5] 下一页
delphi分布式多层数据库图书管理系统论文+源代码 第4页下载如图片无法显示或论文不完整,请联系qq752018766