自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (7)
  • 收藏
  • 关注

原创 DataSnap客户端共享服务器端的数据库连接

客户端的一个连接(SQLConnection)能够共享服务器方法对数据库的访问连接。这样就可以做到一个客户端连接唯一关联服务器端的一条数据库连接;通过该共享连接,在客户端可以直接执行数据库的SQL语句以及存储过程,并且可以与服务器端的调用方法处于相同的事务上下文中。 共享连接的实现,是通过客户端调用服务器的一个返回TDBXConnection实例的方法来实现的。该返回实例并不是真正地返回到

2012-09-28 14:36:25 4926 4

原创 DataSnap服务器方法返回TClientDataSet的简易实现

DataSnap服务器方法不能直接返回TClientDataSet类实例,因为DataSnap不支持把TClientDataSet转化JSON对象,但是,DataSnap支持对TDBXReader的解析,我们可以在服务器端,利用TDBXReader的类方法,先把TClientDataSet实例转化为TDBXReader实例,然后把TDBXReader实例通过方法调用传到客户端,最后在客户端再利用T

2011-11-17 15:49:53 8972 3

原创 多层数据库应用基于Delphi DataSnap方法调用的实现(四)BLOB字段的读写

数据库的BLOB字段,可以用来保存字节流数据,比如图片、声音文件、html文档和大文本等等。Delphi传统的DataSnap技术,客户端数据集的数据包缺省不包含Blob字段数据,但可以在真正需要的时刻,实时自动从数据库取得,这种自动实现是基于IAppServer接口的。但在Da

2011-07-30 17:16:49 4613 1

原创 文档处理各阶段并发执行设计模式的实现

Delphi应用程序实际开发应用中,经常会遇到文档或数据的处理流水线,比如,要打印输出一系列文档,一般的做法,都是在主线程中一条线完成的,如下图所示:   这种方式的执行效率比较低,因为创建文档或打印文档阶段,可能都是比较耗时的,用户体验就是整个过程耗时比较长。实际上,整个流水线

2011-07-16 13:45:39 1736

原创 利用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 5645 4

原创 多层数据库应用基于Delphi DataSnap方法调用的实现(三)对象池技术

<br />之前说到中间层通过向客户端暴露方法的方式提供服务,实现数据库数据的读取和更新。方法调用的方式,其潜在的意义,就是说中间层不保存客户端状态信息,就像WEB服务一样,客户端需要自己保存自己的状态信息。进一步说,就是中间层具体提供方法的业务对象实例,不是也不应该专属于某个客户端,它应该能够为不同的客户端调用提供服务。如果我们把业务对象实例放到对象池中集中存放,调用方法时随用随取,方法结束即放回池中。这样就可以实现业务对象实例服务于不同的客户端调用请求。更重要的是,利用对象池,能够最大化服务器各种资源的

2011-02-12 15:13:00 7197 5

原创 利用DataSnap的回调功能在客户端显示服务器方法的执行进度

DataSnap Callback 执行进度

2011-02-11 14:49:00 5960

原创 多层数据库应用基于Delphi DataSnap方法调用的实现(二)更新数据集

    传统的数据集的读取和更新,是通过中间层的TDataSetProvider来完成的。TDataSetProvider负责从它上游的数据集读取数据生成Data包,再传给客户端;另一方面,在客户端提交更新时(TClientDataSet.ApplyUpdates),TDataSetProvider还负责解析上传的Delta包,并最终实现数据库的更新。现在在我们当前的方法调用方式下,不能再通过TDataSetProvider.ApplyUpdates来自动完成更新了,但是,我们还可以借用TDataSetPr

2011-02-08 18:29:00 11475 4

原创 多层数据库应用基于Delphi DataSnap方法调用的实现(一)返回数据集

    从Delphi 2009开始,DataSnap技术发生了很大的变化,并在Delphi 2010和Delphi XE的后续版本中得到了持续的改进。Delphi 2009之前的DataSnap,虽然也实现了对中间层的方法调用,但那是基于COM技术的,实现起来比较麻烦,而且最关键的,是不能直接返回数据集(TDataSet)。如今,基于JSON的DataSnap,已经脱离了COM的束缚,可以很方便地直接返回数据集。我们在开发多层的数据库应用时,就可以采用全新的方式来进行,即客户端的所有数据查询和更新,可以被

2011-02-08 14:02:00 14337 3

原创 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 5799

原创 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 4165 1

极速读取Excel文件中的海量数据并写入到数据库的实现

通过程序方式从Excel文件中读取数据并导入数据库的传统方法,是通过创建一个OLE对象,打开Excel文件,逐行访问记录行及各个单元,写入数据库表。这种方法一旦数据行通过一定的数量,执行效果就无法忍受了。究其根源,是通过OLE对象的属性访问单元格中的数据并进行类型转换的操作,执行效率是相当差的! 本方法通过把Excel大文件中的全部记录一次行进行拷贝,粘贴到程序中的对象,然后遍历该对象执行数据插入。这种方式的执行效率比传统方式提高了一个数量级,以前几分钟才能完成的导入操作,现在只需要几秒种! 本方法不需要任何第三方的支持库,程序代码也非常简单,希望能够帮助到大家!

2021-01-22

调用pxlib函数接口向paradox文件插入新记录

本文档通过一段代码和详细注释,演示了如何利用pxlib接口,向paradox数据库文件中插入新记录的完整过程,其他更新和删除记录等操作也可以据此获得借鉴和帮助。

2020-09-29

在Lazarus中安装UniDAC.docx

  UniDAC作为一款优秀的数据库访问控件,支持所有的Delphi版本,除此之外,UniDAC也支持在Lazarus中使用,但是这方面的资料很少,本文档以图文的方式,详细描述了UniDAC在Lazarus上的安装过程及一般注意事项,希望能够对大家有所帮助。

2020-08-13

lazarus-2.0.8-fpc-3.0.4-win64.exe

Lazarus的设计目标是应用Free Pascal,所以所有凡是Free Pascal能运行的平台,Lazarus都可以运行。最新版本能运行于Linux,Win32和Mac OS。整个界面的外观和操作和Delphi IDE一样,因此,如果你会使用Delphi的话,用起Lazarus IDE来就一定能得心应手了。 Lazarus有多个版本,当前最新版本是lazarus-2.0.10-fpc-3.2.0,一般情况下是使用最新版本,但有时候也有例外,比如使用UniDAC第三方组件时,它只支持到2.0.8的版本,在2.0.10版本上无法正常安装。这里提供的2.0.8版本是从官网下载的。

2020-08-13

简单、快捷、准确地获取互联网时间

如何迅速地获取到准确的网络时间,以便在系统中实现诸如时间同步的操作,相信有许多人都与我有同样的需求。但是,遍查百度搜索,有说国外的时间服务器一般都很慢的,国内的又比较难找,种种说法、种种代码,最后都没有取得满意的结果,最后只好自己去摸索了。功夫不负有心人,经过努力终于成功了!最后的结果是,方法和代码都非常简单,速度也是毫秒级的。所以,问题的关键是要找对路!

2016-11-19

RSA加解密在Delphi代码中的实现Demo

网上关于RAS的介绍很多,但要从原理上理解清楚,并运用在自己程序中(特别是Delphi程序),却并不是一件简单的事情,可参考的例子很少。本例直接利用Indy的封装类及OpenSSL的DLL,并用Delphi来实现RAS的密钥对生成、加解密等过程,最大程度地简化了这个复杂的过程,让程序员能够把精力放在业务问题的解决上,减少在这方面探索时所耗费的精力和时间。希望这个Demo,能够起到抛砖引玉的利用,帮助到有需要的人。

2016-11-18

Delphi DataSnap 2009方法调用实现Blob字段的读写示例

本资源,演示了利用DataSnap 2009,通过方法调用方式,实现多层数据库应用的架构中,Blob字段的读写过程。 原创。 相关介绍文章: http://blog.csdn.net/ddqqyy/article/details/6646918

2011-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除