- 博客(11)
- 资源 (7)
- 收藏
- 关注
原创 DataSnap客户端共享服务器端的数据库连接
客户端的一个连接(SQLConnection)能够共享服务器方法对数据库的访问连接。这样就可以做到一个客户端连接唯一关联服务器端的一条数据库连接;通过该共享连接,在客户端可以直接执行数据库的SQL语句以及存储过程,并且可以与服务器端的调用方法处于相同的事务上下文中。 共享连接的实现,是通过客户端调用服务器的一个返回TDBXConnection实例的方法来实现的。该返回实例并不是真正地返回到
2012-09-28 14:36:25
5106
1
原创 DataSnap服务器方法返回TClientDataSet的简易实现
DataSnap服务器方法不能直接返回TClientDataSet类实例,因为DataSnap不支持把TClientDataSet转化JSON对象,但是,DataSnap支持对TDBXReader的解析,我们可以在服务器端,利用TDBXReader的类方法,先把TClientDataSet实例转化为TDBXReader实例,然后把TDBXReader实例通过方法调用传到客户端,最后在客户端再利用T
2011-11-17 15:49:53
9087
3
原创 多层数据库应用基于Delphi DataSnap方法调用的实现(四)BLOB字段的读写
数据库的BLOB字段,可以用来保存字节流数据,比如图片、声音文件、html文档和大文本等等。Delphi传统的DataSnap技术,客户端数据集的数据包缺省不包含Blob字段数据,但可以在真正需要的时刻,实时自动从数据库取得,这种自动实现是基于IAppServer接口的。但在Da
2011-07-30 17:16:49
4721
原创 文档处理各阶段并发执行设计模式的实现
Delphi应用程序实际开发应用中,经常会遇到文档或数据的处理流水线,比如,要打印输出一系列文档,一般的做法,都是在主线程中一条线完成的,如下图所示: 这种方式的执行效率比较低,因为创建文档或打印文档阶段,可能都是比较耗时的,用户体验就是整个过程耗时比较长。实际上,整个流水线
2011-07-16 13:45:39
1802
原创 利用DataSnap进行数据流(TStream)的传递
<br />DataSnap服务器可以通过方法调用向客户端返回数据流,当然,也可以从客户端向服务器上传数据流,都是通过方法调用的方式来实现的。下面以一个简单的例子来演示。<br /> <br />服务器端实现:<br /> <br />{$METHODINFO ON}<br /> TFUService = class(TPersistent)<br /> public<br /> function ReplaceFile(FileName: string; FileStream: TStream)
2011-02-15 13:57:00
5754
3
原创 多层数据库应用基于Delphi DataSnap方法调用的实现(三)对象池技术
<br />之前说到中间层通过向客户端暴露方法的方式提供服务,实现数据库数据的读取和更新。方法调用的方式,其潜在的意义,就是说中间层不保存客户端状态信息,就像WEB服务一样,客户端需要自己保存自己的状态信息。进一步说,就是中间层具体提供方法的业务对象实例,不是也不应该专属于某个客户端,它应该能够为不同的客户端调用提供服务。如果我们把业务对象实例放到对象池中集中存放,调用方法时随用随取,方法结束即放回池中。这样就可以实现业务对象实例服务于不同的客户端调用请求。更重要的是,利用对象池,能够最大化服务器各种资源的
2011-02-12 15:13:00
7296
5
原创 多层数据库应用基于Delphi DataSnap方法调用的实现(二)更新数据集
传统的数据集的读取和更新,是通过中间层的TDataSetProvider来完成的。TDataSetProvider负责从它上游的数据集读取数据生成Data包,再传给客户端;另一方面,在客户端提交更新时(TClientDataSet.ApplyUpdates),TDataSetProvider还负责解析上传的Delta包,并最终实现数据库的更新。现在在我们当前的方法调用方式下,不能再通过TDataSetProvider.ApplyUpdates来自动完成更新了,但是,我们还可以借用TDataSetPr
2011-02-08 18:29:00
11569
2
原创 多层数据库应用基于Delphi DataSnap方法调用的实现(一)返回数据集
从Delphi 2009开始,DataSnap技术发生了很大的变化,并在Delphi 2010和Delphi XE的后续版本中得到了持续的改进。Delphi 2009之前的DataSnap,虽然也实现了对中间层的方法调用,但那是基于COM技术的,实现起来比较麻烦,而且最关键的,是不能直接返回数据集(TDataSet)。如今,基于JSON的DataSnap,已经脱离了COM的束缚,可以很方便地直接返回数据集。我们在开发多层的数据库应用时,就可以采用全新的方式来进行,即客户端的所有数据查询和更新,可以被
2011-02-08 14:02:00
14496
1
原创 Instant Client简介
Instant Client是Oracle官方提供的轻量级绿色环保客户端程序包,能够方便和快速地进行安装和部署。它支持OCI, OCCI, Pro*C, ODBC, and JDBC接口。下面以windows平台为例,简单介绍一下它的安装过程。1、从官网上下载与数据库版本、本地平台版本相对应的Instant Client版本。链接页面:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html2、解
2011-02-07 10:10:00
6072
原创 Delphi XE增强的RTTI妙用--动态创建包中的窗口类
以前要在运行时创建package中的form类,必须要在form单元文件中这样注册类:Initialization RegisterClass(TForm3);Finalization UnRegisterClass(TForm3);然后在调用模块中,通过FindClass或GetClass函数返回一个TPersistentClass,再通过此类引用创建窗口类: AClass := GetClass(ClassName); aForm := TCustomForm(AClass.Create).Cr
2011-02-05 13:45:00
4313
1
极速读取Excel文件中的海量数据并写入到数据库的实现
2021-01-22
调用pxlib函数接口向paradox文件插入新记录
2020-09-29
在Lazarus中安装UniDAC.docx
2020-08-13
lazarus-2.0.8-fpc-3.0.4-win64.exe
2020-08-13
简单、快捷、准确地获取互联网时间
2016-11-19
RSA加解密在Delphi代码中的实现Demo
2016-11-18
Delphi DataSnap 2009方法调用实现Blob字段的读写示例
2011-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人