XE5或XE7,操作系统Windows7(64位)操作系统。
数据库MSSQL选择SQLServer2008。
如果数据库服务没有在开发电脑上,则需要在开发电脑上安装Microsoft SQL Server 2008 Native Client。因为是64位开发环境,所以需要下载64位的安装包[1]。
X64 包下载地址:
如果是32位开发环境,则安装X86安装包,对应下载地址:
当然,也可以将本实例中的组件SQLConnection---SQLDataSet---DataSetProvider更改为:
TFDPhysMSSQLDriverLink---TFDConnection---TFDQuery---TDataSetProvider
另外一种服务端连接数据库的替代方案是常用的 TADOConnection---TADOQuery---TDataSetProvider
当然,如果是客户端即连接数据库又进行显示的话,将TDataSetProvider换为TDataSource---TDBGrid即可,即 TADOConnection---TADOQuery---TDataSource---TDBGrid
在一台电脑上搭建MSSQLServer2008或MSSQLServer2005数据库。
IP地址 |
192.168.0.123 |
用户名 |
test |
密码 |
123 |
数据库 |
xxx |
数据库中的表 |
T_Bug |
File->New->Other…->Delphi Projects->DataSnap Server->DataSnapServer,点击OK
1向导中选择“VCL Forms Application”->Next>>
2向导中选择 TCP/IP、HTTP、Server Methods Class ->Next>>
3向导中选择默认端口211,单击测试若出现成功,则可以使用;否则自己设定一个端口,确保正常即可->Next>>
4向导中选择“TDSServerModule”->Finish
然后保存工程到指定路径。
浏览器中输入
返回结果应为{"result":["TestData"]}
使用DBExpress的DBX控件连接数据库
打开ServerMethodUnit1单元,添加组件:
最后设置Connection为ture进行连接测试,如果不行,检查配置已经数据库服务器是否添加了针对数据库服务的防火墙例外。
为了支持客户端数据库语句操作,需要对DataSetProvider的以下几个属性进行配置,poAutoRefresh,poPropogateChange,poAllowCommandText设置为true。
编译,启动起来,待客户端开发时连接使用。
File->New->VCL Forms Application – Delphi
上述工程建好后,再添加SnapClient。步骤如下:
File->New->Other…->Delphi Projects->DataSnap Server->DataSnapClient Module,点击OK
向导中选择“Remote server”->Next>>
向导中选择“DataSnap stand alone server”->Next>>
向导中选择“TCP/IP”->Next>>
向导中填写信息“Host Name”填写本机的IP地址“192.168.0.198”
端口填写服务的端口“211”, 点击Test Connection成功后,点击Finish。
添加成功后,配置信息已经写入SQLConnection的属性中
在tool palette中,找到“DataSnap Client”下的TDSProviderConnection,将其放在ClientModuleUnit1这个单元里。
配置SQLConnection,双击即可。在ServerClassName中填写服务端对应DataSnap服务的类的名字TServerMethods1
最后,需要进行连接,双击Connected。
如果没有连接成功,请检查配置。
在Unit1这个form里,增加控件,在Tool Palette中找到“Data Access”,在其下的TClientDataSet、TDataSource两个组件放入Form。同时在DataControl这个组中,找到TDBGrid放到Form上,用于显示数据。
为了能够共用ClientModuleUnit1中的DSProviderConnection,在Unit1的Form中添加两份相同的上述控件。
首先配置RemoteServer,正常双击即可将ClientModule1.DSProviderConnection1增加进来。
其次,配置ProviderName,双击即可设置为“DataSetProvider1”
设置其DataSet即可。
设置其数据源即可,即DataSource。
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Close;
ClientDataSet1.CommandText := ‘ select top 10 * from T_Bug ‘;
ClientDataSet1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet2.Close;
ClientDataSet2.CommandText := ‘ select top 3 * from T_Bug ‘;
ClientDataSet2.Open;
end;
该问题需要在客户端主单元中引入MidasLib即可(添加MidasLib的目的是省去发布Midas.dll)。
如果服务器使用了http协议作为datasnap通讯的话,还需在客户端程序中加上 uses DSHTTPLayer;如果使用tcp协议,无需增加DSHTTPLayer
在编译电脑上运行正常,程序在其它电脑上运行出现问题
解决办法:
--服务端
在unit ServerMethodsUnit1单元中,添加uses MidasLib;(添加MidasLib的目的是省去发布Midas.dll)
如果用的是火鸟数据库,只需拷贝dbxfb.dll和fbclient.dll
分发的服务器软件只需三个文件:服务器程序、dbxfb.dll 和 fbclient.dll
--客户端
在客户端程序中加上uses MidasLib;(添加MidasLib的目的是省去发布Midas.dll)
如果服务器使用了http协议作为datasnap通讯的话,还需在客户端程序中加上 users DSHTTPLayer;如果使用tcp协议,无需增加DSHTTPLayer
http://www.10qianwan.com/articledetail/203811.html
原文:https://www.cnblogs.com/railgunman/p/11455986.html