博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi DataSnap 的使用
阅读量:6292 次
发布时间:2019-06-22

本文共 2272 字,大约阅读时间需要 7 分钟。

hot3.png

DataSnap 2009是从Delphi2009开始提供的新的DataSnap,对原有DataSnap大副改进,虽然保留了原来的基于COM的方式,但默认是使用新的不基于COM的方式,这使得它成为轻量级的、灵活的多层应用技术。这也为将来的跨平台提供了基础。

Delphi2010继续新的DataSnap,应该叫DataSnap 2009呢?还是DataSnap 2010?命名不太明确。我更希望它叫DataSnap2.0。
一、新的DataSnap的第一种用法是服务器方法调用(server methods invoke),这个有向导,使用起来很简单。
工具条上点击New Items:
25092901_lwD4.jpg
25092901_fQoq.jpg
服务方法类的继承,我们就选默认的TDSServerModule,因为这个封装得最全面,后面一个比一个简单还需要我们写多余的代码。
ServerContainerUnit 容器内已经给我们放置好了服务器端的控件,DSServerClass1.LifeCycle属性有3个选项:Session、Server、 Invocation,我们选默认的Session,这个使得我们的ServerMethods类的实例的生命周期是一个连接会话。而Server是只产 生一个实例服务于整个Server的运行期,我们的ServerMethods类需要对多个线程同时访问是安全的,也就是不能因为多线程访问我们的类而导 致出错。Invocation是每次调用都产生一个实例,虽然节省内存,但显然在大访问量的情况下效率低下。
25092901_F5Gv.jpg
如果我们建立Service服务程序,在这个单元内还自动生成了控制DataSnap启停的语句。
ServerMethodsUnit单元内已经为我们写好了一个EchoString方法,我们依样画葫芦就行了。
运行这个服务器,点击菜单Run,Run Without Debugging。
建立客户端,生成一个普通窗体程序,放置一个TSQLConnection控件,设置它的Driver为Datasnap,我们就可以勾选Connected属性连接服务器了。
在TSQLConnection控件上点击右键,选择Generate DataSnap client classes,Delphi自动生成代理类,通过调用代理对象,我们就可以像调用本地方法一样调用服务器上的方法。
25092901_22PO.jpg
二、新的DataSnap的第二种用法是IAppServer接口的应用,这可以使新的DataSnap可以像原来的旧的DataSnap一样,直接用数据控件连接远程服务器,读取、编辑、更新数据。
⒈用DataSnap向导生成服务器框架程序,在ServerMethodsUnit单元的数据模块窗体上,放上TSQLConnection、TSQLQuery、TDataSetProvide。
25092901_GUnj.jpg
设置好它们的关联,另外DataSetProvider1的Options要选中poAllowCommandText,以允许远程客户端发送命令。
我们可以看到,这些和旧的DataSnap的用法上基本上是一样的。
2.设置客户端。
   新建立一个VCL Forms程序,在窗体上放置TSQLConnection并设置连接刚才的服务器。放置一个TDSProviderConnection,这个控件具有 和服务器上的TDataSetProvider对接的功能,设置它的SQLConnection属性为刚才放置的SQLConnection1。另外要设 置它的ServerClassName属性,这个比较关键,必须设置,否则打开数据集时会出现:Exception class EOleException with message 'Remote error: .AS_GetRecords method not found in the server method list'. 。这个属性在Object Inspector内没有下拉列表框,即使已经连接到服务器也没有,必须手工输入,这个或许是需要改进的地方。这里我们输入向导自动生成的服务器的类 名:TServerMethods2。
然后放置TClientDataSet控件,设置它的RemoteServer属性为刚才放置的 DSProviderConnection1,如果已经连接服务器了,就可以在ProviderName属性下拉框,选择 DataSetProvider1,这个DataSetProvider1就是服务器那一端的那个DataSetProvider1。
以后再放置TDataSource、TDBGrid、TDBNavigator,并关联,我们就轻车熟路了。
放置一个按钮,命名为btnSave,双击写事件:ClientDataSet1.ApplyUpdates(0);。
如图:
25092901_14L5.jpg
这 里我连接的BlackFish数据库Employee,数据库文件位于C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL\employee.jds。连接的Country 表。
我们可以运行客户端,修改数据,点导航按钮的保存后,再点击btnSave保存到服务器数据库。然后我们用Data Explorer查看数据库表,确实已经被修改了。

转载于:https://my.oschina.net/u/582827/blog/348411

你可能感兴趣的文章
给自己定的目标
查看>>
LAMP平台部署及应用
查看>>
Supervisor 托管服务
查看>>
分享一下收到的微软CRM云分享计划 邮件
查看>>
DVWA系列之21 存储型XSS分析与利用
查看>>
Hyper-V 2016 系列教程25 配置NFS 存储服务器
查看>>
vCloud Automation Center (vCAC) 6.0 (一)
查看>>
oracle 11g dataguard安装出现的错误
查看>>
Microsoft Dynamics CRM 2013 试用之系统篇 Windows Server 2012 R2安装
查看>>
Skype For Business 2015实战系列6:后端数据库安装CU6补丁
查看>>
web安全之信息刺探防范(上)
查看>>
Oracle CRS的管理与维护
查看>>
开启Sharepoint 2013站点邮箱
查看>>
【VMCloud云平台】SCO(一)规划
查看>>
相对路径和绝对路径错误造成的漏洞
查看>>
元胞自动机:更接近人类思考的智能模型
查看>>
ISCSI网络存储
查看>>
开源跳板机(堡垒机)Jumpserver v0.2.0 使用说明
查看>>
第二组视频:MySQL复制
查看>>
不同系统查WWN号
查看>>