XE5 搭建DataSnap服务
XE5 搭建DataSnap服务
1 准备工作
1.1 环境准备
XE5或XE7,操作系统Windows7(64位)操作系统。
数据库MSSQL选择SQLServer2008。
如果数据库服务没有在开发电脑上,则需要在开发电脑上安装Microsoft SQL Server 2008 Native Client。因为是64位开发环境,所以需要下载64位的安装包[1]。
X64 包下载地址:
http://download.microsoft.com/download/9/9/d/99de4110-04b7-4e0e-8375-b04234fff0d8/sqlncli.msi
如果是32位开发环境,则安装X86安装包,对应下载地址:
http://download.microsoft.com/download/b/b/2/bb22098a-c071-415f-9269-2eb26cefb562/sqlncli.msi
当然,也可以将本实例中的组件SQLConnection---SQLDataSet---DataSetProvider更改为:
TFDPhysMSSQLDriverLink---TFDConnection---TFDQuery---TDataSetProvider
另外一种服务端连接数据库的替代方案是常用的 TADOConnection---TADOQuery---TDataSetProvider
当然,如果是客户端即连接数据库又进行显示的话,将TDataSetProvider换为TDataSource---TDBGrid即可,即 TADOConnection---TADOQuery---TDataSource---TDBGrid
2 搭建数据库服务
在一台电脑上搭建MSSQLServer2008或MSSQLServer2005数据库。
2.1 数据库信息
IP地址 |
192.168.0.123 |
用户名 |
test |
密码 |
123 |
数据库 |
xxx |
数据库中的表 |
T_Bug |
3 开发DataSnap服务
3.1 新建工程(以XE5为例)
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
然后保存工程到指定路径。
3.2 测试DataSnap服务
浏览器中输入
http://192.168.0.198:8080/datasnap/rest/TServerMethods1/EchoString/TestData
返回结果应为{"result":["TestData"]}
3.3 配置数据库
使用DBExpress的DBX控件连接数据库
打开ServerMethodUnit1单元,添加组件:
(1)SQLConnection
(2)SQLDataSet
(3)DataSetProvider
3.3.1 SQLConnection设置
最后设置Connection为ture进行连接测试,如果不行,检查配置已经数据库服务器是否添加了针对数据库服务的防火墙例外。
为了支持客户端数据库语句操作,需要对DataSetProvider的以下几个属性进行配置,poAutoRefresh,poPropogateChange,poAllowCommandText设置为true。
3.3.2 SQLDataSet设置
3.3.3 DataSetProvider设置
3.3.4 搭建完成
编译,启动起来,待客户端开发时连接使用。
4 开发DataSnap客户端
4.1 新建工程(以XE5为例)
File->New->VCL Forms Application – Delphi
上述工程建好后,再添加SnapClient。步骤如下:
4.1.1 添加DataSnapClient
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的属性中
4.2 添加连接服务端的组件DSProviderConnection
在tool palette中,找到“DataSnap Client”下的TDSProviderConnection,将其放在ClientModuleUnit1这个单元里。
4.2.1 配置DSProviderConnection
配置SQLConnection,双击即可。在ServerClassName中填写服务端对应DataSnap服务的类的名字TServerMethods1
最后,需要进行连接,双击Connected。
如果没有连接成功,请检查配置。
4.3 测试程序代码
4.3.1 在主单元中增加ClientModuleUnit1
在Unit1这个form里,增加控件,在Tool Palette中找到“Data Access”,在其下的TClientDataSet、TDataSource两个组件放入Form。同时在DataControl这个组中,找到TDBGrid放到Form上,用于显示数据。
为了能够共用ClientModuleUnit1中的DSProviderConnection,在Unit1的Form中添加两份相同的上述控件。
4.3.2 ClientDataSet设置
首先配置RemoteServer,正常双击即可将ClientModule1.DSProviderConnection1增加进来。
其次,配置ProviderName,双击即可设置为“DataSetProvider1”
4.3.3 DataSource设置
设置其DataSet即可。
4.3.4 DBGrid设置
设置其数据源即可,即DataSource。
4.3.5 对另外一组做同样的上述设置
4.3.6 添加两个Button,分别对两组进行测试
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;
4.3.7 测试问题处理
该问题需要在客户端主单元中引入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
添加后运行界面如图:
参考文献
[1] DBX Error:Driver could not be properly initialized. Client library may be missing, not installed pro [C/OL]/ [2016-07-10]. https://blog.csdn.net/2001xgp/article/details/51870859.
https://www.cnblogs.com/cb168/p/4281155.html
https://www.cnblogs.com/neugls/archive/2011/09/27/2193579.html LiveBinding
转载于:https://www.cnblogs.com/m0488/p/9583678.html
XE5 搭建DataSnap服务相关推荐
- 【深度学习】基于深度学习的linux服务器,需要搭建哪些服务,一步步搭建深度学习的环境,cuda,pytorch,opencv,ftp服务, nfs服务 docker等等
来来回回的安装服务器,是时间写个pipline了,在这里主要记录下生产环境下的一台基于深度学习的linux服务器,需要搭建那些服务 文章目录 前言 一.开工 1.1 切换yum源 1.2 minico ...
- 五分钟搭建BERT服务,实现1000+QPS,这个Service-Streamer做到了
作者 | 刘欣 简介:刘欣,Meteorix,毕业于华中科技大学,前网易游戏技术总监,现任香侬科技算法架构负责人.之前专注游戏引擎工具架构和自动化领域,2018年在GDC和GoogleIO开源Airt ...
- 15.4 xshell使用xftp传输文件;15.5 使用pure-ftpd搭建ftp服务
扩展: vsftp使用mysql存放虚拟用户并验证 : http://www.aminglinux.com/bbs/thread-342-1-1.html ftp的主动和被动模式 : http://w ...
- Azure 中快速搭建 FTPS 服务
FTP,FTPS 与 SFTP 的区别 FTP (File Transfer Protocol)是一种常用的文件传输协议,在日常工作中被广泛应用.不过,FTP 协议使用明文传输.如果文件传输发生在公网 ...
- Linux / CentOs 7搭建DHCP服务
在前面介绍了怎么在Windows server 2016中搭建DHCP服务, 我们今天介绍如何在Linux / CentOS 7操作系统中搭建DHCP服务? 跟在Windows server 2016 ...
- 快速搭建samba服务
如何在UNIX主机和windows主机共享数据呢?搭建FTP服务是一种,但是FTP能够很方便的上传下载数据,但是如果想修改数据就会比较麻烦了,这时你需要先把文件下载下来,修改以后再上传上去,这种办法很 ...
- 在Win7的IIS上搭建FTP服务及用户授权
FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...
- 阿里云Kubernetes实战2–搭建基础服务
前言: 在系列的第一篇文章中,我已经介绍过如何在阿里云基于kubeasz搭建K8S集群,通过在K8S上部署gitlab并暴露至集群外来演示服务部署与发现的流程.文章写于4月,忙碌了小半年后,我才有时间 ...
- Xshell使用xftp传输文件,使用pure-ftpd搭建ftp服务
笔记内容: 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 笔记日期:2017-11-03 15.4 xshell使用xftp传输文件 在官网下载xftp, ...
- 飞凌 修改ip地址 linux,linux上搭建DHCP服务
linux上搭建DHCP服务 1.首先安装DHCP服务需要的软件包 yum install dhcp* 2.手工编译DHCP主配置文件/etc/dhcp/dhcpd.conf 配置内容如下 ddns- ...
最新文章
- Oracle 7.3.4 for OpenServer 5 装配
- business man
- oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证
- leetcode 406. 根据身高重建队列(贪心算法)
- MySQL 的主从原理和复制过程简述
- 三星笔记本电脑怎么恢复出厂设置_Mac OS如何恢复出厂设置?安装Mac OS系统教程...
- python库numpy的reshape的终极解释
- MySQL导出表结构
- NodeJS--NVM出现exit status 1解决方法
- windows文件服务器双机热备_几款Windows与Linux双机热备软件推荐
- 01. Linux 简介
- 错误数据(图片)去除
- python表示颜色的代码_python 中颜色的表示
- storj for windows 主网挖矿指南
- python爬虫之喜马拉雅音频数据获取
- APP逆向案例之(二)对加固APP进行分析和破解
- JAVA数组 day03
- 数据分析之股票市场价格分析
- Kubernetes 1.6集群部署
- php pdo基础增删改查 postgresql的主键自增设置 time()