DataSnap与FireDAC三层】的更多相关文章

相交资料: http://blog.csdn.net/shuaihj/article/details/6129131http://www.cnblogs.com/hnxxcxg/p/4007876.htmlhttp://www.cnblogs.com/hnxxcxg/p/4008789.html PS: Unit2不再上传,因为这个是自动生成的(相关资中也提到了自动生成的方法,我在这里就不再多说了). 服务端实例: unit ServerMethodsUnit1; interface uses…
论DATASNAP结合FIREDAC的使用方法 自DELPHI XE5开始引入FIREDAC数据引擎以来,FIREDAC就正式成为了官方的数据引擎.一直到XE10.1 UPDATE1,据笔者观察,FIREDAC都是新版本开发当中的重中之重,其在DELPHI的地位自然是不言而喻. DATASNAP结合FIREDAC,中间件远程方法支持的数据序列格式可谓是丰富多彩.已经不仅仅是只支持OLEVARIANT格式序列.下面且听本人一一道来. 1)OLEVARIANT仍然得到继续支持,这使得成千上万的老程序…
Delphi 使用 Datasnap 进行三层应用开发,积累了几种技术,总结如下: 1.(推荐!)在 Datasnap 服务端 使用 TDatasetProvider,客户端 使用   TDSProviderConnection 1)采用 Datasnap Server ,可以使用TCP/IP.Http 通信.TDatasetProvider 能够提供 “元数据与业务数据”. 推荐:采用(FireDac技术) TFDConnection 连接数据库,通过 TFDQuery/TFDTable 向 …
采用服务器返回数据,一种是返回字符串数据例如JSON,跨平台跨语言,任何语言调用都支持兼容,类似WEBService. 第二种是紧密结合c++builder语言,传输DataSet,可以是ClientDataSet,也可以是FDMemTable,或TDataSet,这类好处是DataSet本身包含了很多属性,记录集的状态Insert/Modify/Delete,在服务端可以调用 不同的方法进行数据处理,客户端也只需要把dataset对象赋值就展示到dbgrid里了. 序列化. FDMemTabl…
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt 同样的程序,在2台win10 正常,1台win10 报连接占线! SQL Native Client  安装客户端 TFDStoredProc FetchOptions.Mode fmOnDemand fmAll 2018.10.9 fixed 方法是 页面的create事件里,所有的FDQuery,FDTable的FetchOptions->Mode…
基于Delphi的三层数据库系统的实现方法   1  引言 当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统. 两层结构的数据库应用系统包括客户/服务器(C/S)模式和浏览器/服务器(B/S)模式,它的特点是数据和程序分离,数据库服务器端管理数据,客户机或浏览器显示.访问和更新数据,因此可以分别进行开发和维护,同时也降低了数据库服务器的工作量,减小了网络的流量,具有较强的安全性,但当客户端程序或浏览器较多时,服务器的性能会明显下降,而且应…
一般http访问的地址是 http://localhost:8099/datasnap/rest/TServerMethods1/EchoString/abc 一.用FDConnection1连接Datasnap服务器 FireDAC  连接Datasnap服务端.这个是tcp协议连接通讯,长连接.服务端不是没个方法都建立实例释放实例,而是连接的时候建立,中间调用多少个方法都不释放实例,连接断开才释放. 不是.net的web api或者Datasnap 的 webmodule,纯粹是tcp. D…
Android开发数据库三层应用-DataSnap http://www.2ccc.com/news/Html/?1517.html 核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完成服务器的设计:(1)利用向导完成DataSnap服务器的框架,如下图:由于是实验,所以选择VCL程序,如果是实际应用,建议Service程序我习惯使用TCP/IP作为通讯协议,简单且速度... 我觉得Delphi最强大的的功能之一就是开发数据…
前面的博客提到用FIREDAC全面替代COM那一套东西:DATAPROVIDER,OLEVARIANT,CLIENTDATASET,DBEXPRESS... 显然,DATASNAP的远程方法必须增加对FIREDAC数据集直接序列的参数类型. 从XE5的UPDATE2开始增加一个新的单元文件:Data.FireDACJSONReflect TFDJSONDataSets是一个数据集列表对象,顾名思义可以返回一个或多个数据集对象,不论是单表或者主从表数据都可传递. 服务端演示代码: function…
一.FireDAC调用DataSnap远程方法查询数据示例 1.服务端使用FDQUERY查询数据并返回TDATASET: function TServerMethods1.GetData(var sqlstr: string): TDataSet; var qry:TFDQurey; begin qry := TFDQuery.Create(nil); try qry.Connection := TServerContainer1.FDConnection1; qry.Open(sql); Re…
elphi 三层框架 DataSnap 的服务器端设置: DataSnap 框架有三个模块:DataSnap Server,Server Module,DataSnap Client Module. 当创新新的 DataSnap Server时,会产生三个文件,分别是: 1)ServerForm 窗口文件: -----  可以扩展了此功能,使得 ServerContainer 可以启动.停止服务,并记录会话的产生.关闭. 2)ServerContainer 服务容器: 主要是:DSServer,…
调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG 1)查询会重复执行的情形:Result := DATASETPROVIDER.Data会触发它关联的DATASET执行一次查询fdquery.Close;fdquery.sql.Clear;fdquery.sql.Text := sql;// d.qryOpen.Open; // 此行代码必须被注释掉,否则SQL会被二次执行Result := DATASETPROVIDER.Data; // 此行又会触发一次f…
firedac引擎DATASNAP多表查询和多表提交 属性设置FDTableAdapter1.SchemaAdapter := FDSchemaAdapter;FDTableAdapter1.DatSTableName := 't1';FDMemTable1.Adapter := FDTableAdapter1;FDTableAdapter2.SchemaAdapter := FDSchemaAdapter;FDTableAdapter2.DatSTableName := 't2';FDMemT…
DATASNAP数据提交之FIREDAC的TFDJSONDeltas FIREDAC的TFDJSONDeltas相当于CLIENTDATASET的DELTA,是作为CLIENTDATASET.DELTA的替代者出现的. TFDJSONDeltas是多个数据集DELTA的集合,一次性可以提交多个数据集修改后的数据到数据库. 服务端代码: function TServerMethods1.SaveData2(const accountNo, tableName: string; delta: TFD…
DATASNAP数据序列之FIREDAC的TFDJSONDataSets DELPHI XE5开始增加了新的数据引擎——FIREDAC,它是跨平台的数据引擎,WINDOWS.LINUX.MAC.APP......都可以使用. 随之DATASNAP也增加了新的远程方法返回数据类型——TFDJSONDataSets. 顾名思义TFDJSONDataSets是数据集列表,是多个数据集的集合,DATASNAP通过它一次可以返回多个查询结果数据集. 服务端代码: function TServerMetho…
非原创  摘自:http://hi.baidu.com/yagzh2000/blog/item/fc69df2cb9845de78b139946.html三层中主从表的操作(删除.新增.修改)一定要在一个事物中完成,那在Delphi中的事物又如何控制呢?我们在开发客户端时,如果为了在一个事物中而用TSqlConnection的事物来控制是徒劳的,没有一点意义,因为真正事物控制是在服务端的TDataSetProvider中产生的,它是自动产生事物的,如果有错误产生,它会回滚事物. 当客户端的Cli…
变量定义: varFDConnection: TFDConnection;qCustomers: TFDQuery; qOrders: TFDQuery;FDSchemaAdapter: TFDSchemaAdapter;FDStanStorageBinLink1: TFDStanStorageBinLink;... 服务端查询方法: TFDSchemaAdapter可以将多个关联的FIREDAC数据集(比如TFDQuery)序列为TSTREAM,当然适用于序列主从表数据. function T…
1. 开发环境说明:win 10 下安装了XE10.2和Delphi7 2.按照网上datasnap 三层与使用xe10 自带的samples 的例子,访问数据库都要报莫名的地址错误,这个太不人性化: Access violation at address 0088C4F7 in module 'DataSnapClient.exe'. Read of address 00000000 折腾了一星期多.怀疑过win10权限,怀疑过所有的dbexpress和FireDac驱动问题,因为我win10…
DBX Framework (dbExpress Framework )用了很长的时间, 一直觉得简单好用,但今天需要连MySQL5.7, 发现已经没办法用了,感觉是时候放弃用它来作数据连接了. 以前一直用它作C/S,三层的开发,真有些舍不得放弃,但没办法!以后连数据库还是要用FireDac了,毕竟各种数据库一直在不断的更新版本,FireDac也一直会不断的更新和完善,而DBX在数据库连接这块已经不会再更新了. 不过,虽然DBX连接数据库的驱动陈旧了,但它仍然在DataSnap体系扮演着重要角色…
论DELPHI三层的数据序列格式的变化 要窥三层的数据序列格式,我们可以通过观察DELPHI官方的客户端内存表. 早先流行的是TClientDataSet,它的Data和Delta属性的数据类型都是:OleVariant. OleVariant其实是微软公司为COM和COM+战略定义的统一的数据序列格式. 早年DELPHI的三层架构就是建立在COM的基础之上的,数据序列自然也就使用OleVariant. 随着软件COM战略的失败,微软公司已经放弃COM战略,现在改为.NET战略了. DELPHI…
Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD理念是无与伦比的符合人性(什么?是懒惰). 目前网上XE10类似教程很少,而且学习途中遇到一些问题就难以继续了,经本菜鸟千辛万苦的求索,特推出Delphi XE 10系列教程. 三层数据库应用是目前最简单.方便.易扩展的架构,而跨平台应用又是所谓的“互联网+”最需要的,下面的教程分服务器端和客户端两…
在开发Datasnap三层中,使用FireDac 连接  MSSQL数据库. 实现过程如下: 1.在ServerMethods 单元中放入 FDManager.FDPhysMSSQLDriverLink1.FDGUIxWaitCursor1等控件. 2.自定义过程: private var oParams: TStrings; procedure TSrvMethods.SetupFDManager; //加载数据库链接信息. begin //*****初始化***** oParams := T…
提供DELPHI中间件及中间件集群,有意请联系. N年前,我们用DELPHI低版本开发的两层程序(比如工厂ERP系统),现在仍然在企业广泛地得到使用,但老系统有些跟不上企业的发展需要了.主要表现在:虽然我们的老系统对企业的业务实现得很好,可以很好地满足企业目前的业务需求,但现在企业要求我们的服务器要能够远程分布式地布署,于是我们自然会想到将原来的两层程序升级为三层,这样无疑将满足企业新的需求.大家都知道DELPHI低版本中间件的开发框架是基于微软陈旧的COM架构的MIDAS,这是一种一.二十年前…
OLEVARIANT——这个COM的序列格式,也是DATASNAP已使用了20年的序列格式,在20年以后的今天,终于有了它的替代者:FIREDAC的TFDJSONDataSets和TFDJSONDeltas,XE5 UPDATE2以上版本的DATASNAP的远程方法定义里面已经增加了这2种类型的支持.FIREDAC的TFDCONNECTION尚没有“GENERATE DATASNAP CLIENT CLASSES”的项,感觉不方便,笔者测试的时候使用TSQLCONNECTION生成的客户端代理类…
随着XE6,XE7,以及半年以后即将发布的XE8,DATASNAP将顺应跨平台的需要, 有可能的情况是这样的:XE8,DATASNAP写的中间件将可以运行在LINUX服务器上面. 大家都知道COM是WINDOWS特有的东西,为了跨平台,COM将被弃用. DATASNAP残留的COM基因的东西统统将被弃用,COM的数据序列格式OLEVARIANT将被弃用, CLIENTDATASET的DATA和DELTA属性是OLEVARIANT,因此也将被弃用,CLIENTDATASET的替代品是FDMEMTA…
Delphi三层网络架构代码实现 1 .三层网络的概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI).业务逻辑层(BLL).数据访问层(DAL). 区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 2.业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 3.数据访问层(DAL):该层所做事务直…
发现使用DBExpress进行MySQL连接老是有莫名其妙的问题,直接改为FireDAC 在上一篇的DataSnap服务框架程序中,将连接的数据库由MSSQL改为本文的MySQL 使用的MySQL数据库是绿色的,以下两个地址内容是一样的,CSDN下载地址 ,百度网盘下载地址  密码: qd6x 需要组件: TFDPhyMySQLDriverLink TFDConnection TFDQuery TDataSetProvider(使用上一篇中已经添加好的,只是调整其DataSet为FDQuery1…
又花时间试了试FireDAC,本想找到一些办法,让FireDAC取数据能和DBX样快,最终还是失败了,DBX实现是太快了,3472第记录(110个字段的表),0毫秒就抓过来了, FireDAC最快也要将近20毫秒.不过FireDAC已经把数据抓到TFDDatSTable中,知道记录条数了,(比DBX要强,DBX的DBXReader是不知道记录数的) 如果只是让FDCommand执行SQL后,不Feach到TFDDatSTable, 那么也是0毫秒(但读取不了数据的). 除此之外, FDMemTa…
TFDManager 连接定义和Connect连接管理  TFDConnection 数据库连接组件,支持三种连接方式:1.持久定义(有一个唯一名称和一个配置文件,可以由FDManager管理) 例: uses   FireDAC.Comp.Client, FireDAC.Stan.Intf; var   oDef: IFDStanConnectionDef; begin   oDef := FDManager.ConnectionDefs.AddConnectionDef;   oDef.Na…
FIREDAC不能识别SQL的某些字段类型 经常见有网友有类似的提问:请问各位,在DataSnap中使用SQL数据SUM函数,如果是统计浮点型数值的话,返回是乱码,哪位是什么原因?  其实这不是DATASNAP的问题,而是FIREDAC的. SQL查询使用SUM(field)函数以后,FIREDAC便不能识别SUM()后的字段类型. 导致在客户端呈现的后果:数值显示不对.许多人遇到过了此种情况,认为非常不可思议的BUG. 笔者在使用MSSQL\MYSQL\ORACEL的过程中,发现均有某些字段不…