社区
网络通信/分布式开发
帖子详情
clientDataSet 的post方法
rsdgjb
2009-04-15 10:15:42
请问在三层模式中调用clientDataSet的ApplyUpdates方法之前调用post方法起什么作用,有什么好处呢?
...全文
253
8
打赏
收藏
clientDataSet 的post方法
请问在三层模式中调用clientDataSet的ApplyUpdates方法之前调用post方法起什么作用,有什么好处呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lzuyh
2009-04-22
打赏
举报
回复
强烈建议看看CBX框架。你在Google中搜索CBX RIA
rsdgjb
2009-04-22
打赏
举报
回复
非常感谢各位,我以为这个帖子没人理了...
AsheBin
2009-04-17
打赏
举报
回复
呵呵,我来说两句.
大家可能没明白楼主的意思
调用Post方法,可以将数据保存在本机的内存中
而本机客户端中显示的数据是本机内存中的数据而不是远程数据
调用这个方法后,本机内存中的数据被更新
显示数据的控件中的数据也被更新
你可以通过Post方法来看到你更新之后的结果
如果要更新到数据库中,那么必须要ApplyUpdates了
调用Post的好处有两个(个人理解):
1.可以看到每次更新之后的数据情况
2.将多次Post之后的数据一起提交给服务器,这样减少服务器的访问次数
对于整个系统的效率的提高是有好处的.
哈哈的哈
2009-04-17
打赏
举报
回复
[Quote=引用 2 楼 rsdgjb 的回复:]
还是不太明白,那在post方法之前的数据呢,不也保存在内存中吗?
[/Quote]
post之前那时候是也保存在内存当中````但是你不提交(post)就在你窗体关闭或者重新 取数据集 的时候就这些数据就自动的销毁了
post呢? 是让他暂时的保存在内存当中 如果你不ApplyUpdates方法 提交数据到服务器 那么你重新启动机子后
你刚post的数据也没了``` 怎么说呢? 也就是说临时记录点吧
xjjrocker
2009-04-17
打赏
举报
回复
post提交到内存,mergechangelog合并,applyupdate真正的更新。
可以简单的这样理解。
rsdgjb
2009-04-15
打赏
举报
回复
还是不太明白,那在post方法之前的数据呢,不也保存在内存中吗?
bdmh
2009-04-15
打赏
举报
回复
批量更新,三层中可以减少服务器负载,适当提高效率,post只是把数据保存到了本机内存,并未提交到服务器
Delphi通过WebService访问数据库
Delphi通过WebService访问数据库. 1.查询数据 procedure TForm1.Button1Click(Sender: TObject); var ls_Table: string; ls_Service: Service1Soap; begin ls_Service := Buf_GetBuleService; ls_Table := 'Customers';
ClientDataSet
1.XMLData := ls_Service.Buf_GetADONetToCDSXml('Northwind',ls_Table,'select * from '+ls_Table); end; 2.更新数据 procedure TForm1.Button2Click(Sender: TObject); var ls_Table: string; ls_Service: Service1Soap; begin ls_Service := Buf_GetBuleService; ls_Table := 'Customers'; if
ClientDataSet
1.State in [dsEdit,dsInsert] then
ClientDataSet
1.
Post
; if
ClientDataSet
1.ChangeCount>0 then ls_Service.Buf_PutCDSXmlToADONet('Northwind',ls_Table,
ClientDataSet
1.XMLData); end;
JsonTo
ClientDataSet
dstCDS.DisableControls; for i := 0 to jsonArr.Length -1 do begin jsonSrc:= SO[jsonArr[i].AsJson(False,False)].AsString; jsonSrc := StringReplace(jsonSrc, '[', '', [rfReplaceAll, rfIgnoreCase]); jsonSrc := StringReplace(jsonSrc, ']', '', [rfReplaceAll, rfIgnoreCase]); jsonSrc := StringReplace(jsonSrc, '"', '', [rfReplaceAll, rfIgnoreCase]); jsonSrc := StringReplace(jsonSrc, '{', '', [rfReplaceAll, rfIgnoreCase]); jsonSrc := StringReplace(jsonSrc, '}', '', [rfReplaceAll, rfIgnoreCase]); dstCDS.Append; for j:= 0 to fieldList.Count -1 do begin dstCDS.FieldByName(fieldList[j]).AsString:= GetFieldParams(fieldList[j], jsonSrc); end; dstCDS.
Post
;
CDS_uniDAC_mmzmagicrmoV1.80
很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特发布个自己写的远程数据库对象希望能给大家平常的工作带来便利和高效(偶自己和同事们都用了挺长时间,十分稳定易用)。 用DELPHI的朋友少不了要和数据库打交道,一般小程序都使用ACCESS或者SQLLITE做数据库感觉十分方便,不用装数据库服务端,客户端不用单独装驱动, 发布程序时直接目录一拷贝就完事,但缺点是不方便从其它计算机对它进行访问, 有了偶这个东东,就可以很方便容易的实现咯。 ps : 就是连接Oracle和mysql,也可以不用装驱动或少附带发布多余的DLL。 当前版本 mmzmagicrmo v1.8 更新历史 v1.0 单元实现 v1.1 解决不支持自增长字段的问题 v1.2 解决id号必须是第1个字段的问题 v1.3 为增加速度,做缓冲不用每次生成语句 ,改变自动更新时导致filter属性暂用的方式 v1.4 在sabason 兄的热心帮助下,解决了流试传输存在的问题,大大提高了传输效率 20100413 v1.5 全面修改为支持高效率的UniDAC数据库驱动套件 和
ClientDataset
(原来是ADO方式)支持所有主流数据库,大幅提高传输效率,且使用
方法
没有改变 v1.6 解决流传输存在的BUG ,修正最后一个字段为blob字段导致语句生成错误的BUG v1.7 增加服务端sys.ini文件配置客户端登陆权限,增加批量执行SQL语句接口 v1.8 增加服务端提供自动升级功能,可以升级多个文件或者目录,可选择强制升级或者客户端可选升级 使用步骤 解压后找个地方存放 将GobUnit目录添加到delphi的搜索路径 将DXSockEnt30(我改过bug的版本)的3个子目录也添加到delphi的搜索路径 即可使用和编译所有偶提供的代码 FAQ: 这个东东都提供什么功能? 答:提供最简单方便高效的方式,通过CDS+UniDAC实现远程数据库 这个东东为什么不封装成控件? 答:本类以单元形式封装,只要加到搜索路径后直接引用即可,无需经过安装等麻烦的步骤。 这个东东适合应用在什么场合? 答:适合应用于小型分布式程序。 这个东东掌握起来有难度吗? 答:没有任何难度,就和你开发本地数据程序一样简单。 这个东东可以应用在我已有的程序里吗? 答:由于我使用的是T
ClientDataset
作为数据集载体,所以无需更改为其他控件,现有的本地数据库程序也可以非常容易的改造为支持分布式数据库。 这个东东稳定吗? 答:经自己长期做小白鼠广泛的实际应用实践,发现方便,稳定。 服务端的端口号是多少? 答:服务端的端口号可以随意设置,只要不和其他程序冲突就可以,并且客户端连接服务端时必须端口一致. 如果服务端重启了客户端需要重启吗? 答:不用,客户端只要连接上服务端以后就有自动断线重连的功能。 我在使用时要注意什么? 答:如果你要用T
ClientDataset
对象的Insert,Edit,Append,
Post
方法
新增数据时,我会占用这个对象的Before
Post
和BeforeDelete事件。 这个东东免费吗? 答:完全免费,并且开放所有源代码,你可以随意改进,传播它,当然如果更好用了,记得给我也发一份 :)(要保留偶的版权和注释信息哦) 这个东东使用到了那些控件? 答:第3方Dxsock,T
ClientDataset
,UniDAC 同时发布的还有我自己积累的几个常用单元,有日志,调试,tcp的通用服务和客户端模块等,同样都是十分有用的东东。 这个东东有demo程序吗? 答:有最简单的示范程序,但时间关系只写了最简单的演示代码,还有很多值得你去挖掘的实用接口和单元。 我有了改进版本,怎么联系这个东东的作者? 答:QQ 22900104 ,Email 22900104@qq.com 马敏钊 发布这个东东的目的是什么? 答:好用的东东大家分享,共同学习,共同进步,希望大家都能发扬开源精神。 构架说明: 大概是这样的,偶有一个服务器对象,负责提供数据库服务,在需要提供数据服务的程序里创建它即可。 使用起来十分简单 首先引用服务端单元 uses UntRmodbSvr; //创建远程服务对象 (参数1 服务端口号 日志对象,如果不需要记录日志请填nil) Gob_RmoDBsvr := TRmodbSvr.Create(FSvrPort, nil); //连接数据库 可以是ADO支持的所有数据库 调用TDBMrg提供的获取各种数据库的链接字符串即可,这里连接Access数据库 Gob_RmoDBsvr.ConnToDb(TDBMrg.GetAccessConnStr('cfg.mdb')); 到此为止,2行代码使你的这个程序具有了将数据库发布出去的能力,其它机器的程序可以方便的通过它访问到数据库,像使用本地数据库一样。 客户端只需连接服务端即可,不管服务端是什么样的数据库,无需安装任何数据库驱动。 uses UntRemSql; //创建客户端对象 RmoClient := TRmoHelper.Create(); //连接服务端 填入服务端地址和端口(与服务端端口一致即可) Result := RmoClient.ReConnSvr(ISvrIP, Iport); 2行代码使你的客户端程序具有了方便的访问到远端的数据库,像使用本地数据库一样,并且你原有的单机数据库程序可以很方便改为远程数据库。 具体使用
方法
可以查看DEMO程序
ClientDataSet
的
Post
方法
的使用时机
吾阅:
ClientDataSet
的
Post
方法
的使用时机,即在每次修改记录后,就要马上
Post
,否则,统一一次来个
Post
,会没有效果,反而还报DataSet not in insert or edit state错误; ----------------------------------------------------------------------- 转自:...
delphi中
clientdataset
使用
方法
1.基本情况介绍;
clientdataset
内存表,他的data属性存放的是数据, delta 增量记录的是日志, 就相当于数据库的 savepoint保存点;每当
clientdataset
的数据有变化时(onbeforeedit, onafteredit),savepoint都会变化。如果我们想取消一段时间的操作,我们可以先记录下这个savepoint,然后修改,如果想取消,直接让这个save
网络通信/分布式开发
1,593
社区成员
32,961
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章