zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [iOS]利用系统NSRegularExpression使用正则表达式
    [iOS]URL编码和解码
    [其他]正则表达式大全
    [算法]不用第三个数交换2个数的位置
    java . -- IDEA运行最简单的Java程序Hello World
    IOS . -转载-10行代码搞定九宫格
    SourceTree --转载 SourceTree大文件上传提示POST git-receive-pack (chunked)相关问题记录
    iOS -转载-使用Navicat查看数据表的ER关系图
    iOS -转载-开发之个人开发者账号转公司开发者账号
    iOS --转载2018苹果$299美元企业级开发者账号申请攻略
  • 原文地址:https://www.cnblogs.com/m0488/p/9583678.html
Copyright © 2011-2022 走看看