delphi DataSnap 2009的简单使用


本文整理自网络,侵删。

 DataSnap 2009是从Delphi2009开始提供的新的DataSnap,对原有DataSnap大副改进,虽然保留了原来的基于COM的方式,但默认是使用新的不基于COM的方式,这使得它成为轻量级的、灵活的多层应用技术。这也为将来的跨平台提供了基础。
Delphi2010继续新的DataSnap,应该叫DataSnap 2009呢?还是DataSnap 2010?命名不太明确。我更希望它叫DataSnap2.0。

一、新的DataSnap的第一种用法是服务器方法调用(server methods invoke),这个有向导,使用起来很简单。
工具条上点击New Items:



服务方法类的继承,我们就选默认的TDSServerModule,因为这个封装得最全面,后面一个比一个简单还需要我们写多余的代码。
ServerContainerUnit容器内已经给我们放置好了服务器端的控件,DSServerClass1.LifeCycle属性有3个选项:Session、Server、Invocation,我们选默认的Session,这个使得我们的ServerMethods类的实例的生命周期是一个连接会话。而Server是只产生一个实例服务于整个Server的运行期,我们的ServerMethods类需要对多个线程同时访问是安全的,也就是不能因为多线程访问我们的类而导致出错。Invocation是每次调用都产生一个实例,虽然节省内存,但显然在大访问量的情况下效率低下。


如果我们建立Service服务程序,在这个单元内还自动生成了控制DataSnap启停的语句。
ServerMethodsUnit单元内已经为我们写好了一个EchoString方法,我们依样画葫芦就行了。
运行这个服务器,点击菜单Run,Run Without Debugging。
建立客户端,生成一个普通窗体程序,放置一个TSQLConnection控件,设置它的Driver为Datasnap,我们就可以勾选Connected属性连接服务器了。
在TSQLConnection控件上点击右键,选择Generate DataSnap client classes,Delphi自动生成代理类,通过调用代理对象,我们就可以像调用本地方法一样调用服务器上的方法。


二、新的DataSnap的第二种用法是IAppServer接口的应用,这可以使新的DataSnap可以像原来的旧的DataSnap一样,直接用数据控件连接远程服务器,读取、编辑、更新数据。
⒈用DataSnap向导生成服务器框架程序,在ServerMethodsUnit单元的数据模块窗体上,放上TSQLConnection、TSQLQuery、TDataSetProvide。


设置好它们的关联,另外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);。
如图:

这里我连接的BlackFish数据库Employee,数据库文件位于C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Demos\database\databases\BlackfishSQL\employee.jds。连接的Country表。
我们可以运行客户端,修改数据,点导航按钮的保存后,再点击btnSave保存到服务器数据库。然后我们用Data Explorer查看数据库表,确实已经被修改了。

相关阅读 >>

Delphi检测用户是否具有administrator权限

Delphi中调用api函数exitwindowsex可以实现系统的关机,注销,和重启

Delphi 利用tmemorystream对象存取缓存

Delphi 中文字符串截取

Delphi console程序中一种定时方法

Delphi firemonkey的tedit七大变化

Delphi 百万次重复调用字符分割函数,不耗内存用法

Delphi idftp 详解

Delphi idhttp中application/x-www-form-urlencoded字符说明

Delphi 将tbitmap与tgpimage转换

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...