导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2018/4/21 12:12:06
标题:
delphi 10.2.3 Datasnap Rest 用TFDJSONDataSets传输数据问题
浏览:3380
加入我的收藏
楼主:
服务器使用FDConnection与数据库相连。客户端使用DSRestConnection与服务器相连。客户端与服务器数据传送使用TFDJSONDeltas。 按照10.2.3的帮助文件中的示例,从服务器读取数据(包括格式文字、图片)到客户端,没有任何问题。 现将客户端数据更新到数据库: 服务器代码: const sWorkerJL='WorkJL'; procedure TServerMethods1.ApplyData(const ADeltaList: TFDJSONDeltas); var LApply: IFDJSONDeltasApplyUpdates; begin LApply := TFDJSONDeltasApplyUpdates.Create(ADeltaList); // Create the apply object LApply.ApplyUpdates(sWorkerJL, FDQJL.Command); // Apply the department delta if LApply.Errors.Count > 0 then raise Exception.Create(LApply.Errors.Strings.Text); end; 客户端: const sWorkerJL='WorkJL'; procedure TClientForm.Button2Click(Sender: TObject); var LDeltaList: TFDJSONDeltas; begin LDeltaList := GetDeltas; // Call server method. Pass the delta list. ClientModule1.ServerMethods1Client.ApplyData(LDeltaList); end; function TClientForm.GetDeltas: TFDJSONDeltas; begin if FDMemJL.State in dsEditModes then FDMemJL.Post; // Create a delta list Result := TFDJSONDeltas.Create; // Add deltas TFDJSONDeltasWriter.ListAdd(Result, sWorkerJL, FDMemJL); end; 在客户端修改或新增数据,提交不成功:
此帖子包含附件: 大小: 27.7K
----------------------------------------------
-
作者:
2018/4/21 15:27:04
1楼:
datasnap Rest这么优秀,居然没人用?高手不肯帮,只能自己钻。
----------------------------------------------
-
作者:
ydrzh (ydrzh)
★☆☆☆☆
-
普通会员
2018/4/21 15:49:34
2楼:
客户端的FDMemTable的CacheUpdate属性设置为True
----------------------------------------------
-
作者:
2018/4/21 15:59:37
2楼:
更新不了?没人帮?原来以为datasnap Rest只能用来学习,现在是彻底改变了对RSET的认识。终于解决数据新增、删除、修改、查询了。 看来用datasnap搞手机APP,数据交互问题解决差不多了。剩下的,继续熟悉FireMonkey了。革命尚未成功,同志仍须努力。牢记使命,不忘初心,我的初心就是delphi。
----------------------------------------------
-
作者:
2018/4/21 16:11:43
3楼:
听着窗外寂莫,多少次测试、修改、搜索,拿下问题已经是夜深人静; Delphi、datasnap,功力何等精深,但你却为何隐居山林,知你、懂你者凤毛麟角? 是世人愚钝,还是你不愿与java、php随波逐流? 感谢伟大的EMB,伟大的delphi,伟大的datasnap。 伟大的神啊,你为何跟我一样,如此孤独?
----------------------------------------------
-
作者:
2018/4/21 16:15:04
4楼:
ydrzh:设置了,问题不在这。如果没设置,就是不会更新数据,但不会出错。
----------------------------------------------
-
作者:
2018/4/21 16:26:04
5楼:
问题解决了,整顿行装再出发。下一步:1千个并发在线连接压力测试。问题是,到哪去找一千部手机? 不过,得先测试,Rest服务器,内存是否泄露,是否每个连接,都会过度消耗服务器资源。
----------------------------------------------
-
作者:
2018/4/21 16:53:00
6楼:
21 号 星期六,我这样的白痴都下班休息了,高手更是鬼混去了,怎么可能帮你解决问题。 楼主才是高手啊,不过是保密局的高手。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/4/21 16:57:34
7楼:
楼上2位,一个风趣幽默,一个谦虚自如
----------------------------------------------
只有偏执狂才能生存!
作者:
2018/4/21 17:15:41
8楼:
wang_80919:大师,我发本贴,主要是想让所有delphier知道datasnap rest这一神器的厉害。用REST做增删改查CRUD,本不是很难的事,也没啥技术含量,照着10.2.3中帮助中现成事例和教程,再加上自己稍微探索下,应该问题不大。FireDac+DataSnap本来是emb推荐的开发三层及移动APP的方式,比一般第三方中间件应该更稳定科学,如果马上告诉大家,可能影响在本群广告的中间件销售,也许,这样几位高人不高兴,哈哈。
----------------------------------------------
-
作者:
2018/4/21 17:26:04
9楼:
FireDac+DataSnap本来是emb推荐的开发三层及移动APP的方式,比一般第三方中间件应该更稳定科学,如果马上告诉大家,可能影响在本群广告的中间件销售,也许,这样几位高人不高兴,哈哈。
别这么大言不惭的,或许你越了解DATASNAP越会放弃呢?哈哈
----------------------------------------------
-
作者:
cdsy (成都4友)
▲▲▲△△
-
普通会员
2018/4/21 17:39:46
10楼:
真要搞REST,土拨鼠绝对适合你。 可参考叫兽叔叔的开源框架,比你想象的强大得多。
----------------------------------------------
-
作者:
2018/4/21 19:52:30
11楼:
又遇到问题了,中间件在服务器上运行正常,可是换一台服务器,连接超时。两台服务器,都装win2008R2。emb的产品,总是不会让你一蹴而就,你必须探索后才有收获。
----------------------------------------------
-
作者:
2018/4/24 11:56:57
12楼:
mORMot源码和资料,到哪下载呢?@cdsy大师?
----------------------------------------------
-
作者:
cdsy (成都4友)
▲▲▲△△
-
普通会员
2018/4/24 12:13:45
13楼:
叫兽的框架。 全新的REST框架,值得你拥有 SVN地址https://115.159.70.108:8443/svn/SuperEngine 账号密码:public 框架正在完善中
----------------------------------------------
-
作者:
2018/4/24 12:22:40
14楼:
昨天到mORMot官网上下载了源码,似乎都是些pas,没有dpk,好像没有组件安装包,没细看,还不知道怎样用,也不知道是否支持客户端android&iOS。
----------------------------------------------
-
作者:
2018/4/24 15:39:10
15楼:
@nickemma:别这么大言不惭的,或许你越了解DATASNAP越会放弃呢?哈哈 您讲这个有根据吗?您真正用过datasnap做项目吗?
----------------------------------------------
-
作者:
2018/4/24 17:02:50
16楼:
REST你就没必要用这个TFDJSONDataSets了,REST风格的初衷是将操作资源化,delta提交无异于掩盖了REST特点,而且你这服务端做出来也无法或很难与其它非Delphi的对接。
----------------------------------------------
good good study, day day up.
作者:
2018/4/24 20:40:26
17楼:
@goodluvy:谢谢提醒。我使用TFDJSONDataSets做数据传送感觉方法比较简单,而且可靠。 但有一个问题,就是使用datasnap REST时,客户端必须使用DSRestConnection1与服务器连接,有些服务器连接得上,换一台就连不上。不知如何配置服务器。 但使用datasnap server,客户端使用FDConnection1与服务器连接很正常。似乎无须配置服务。
----------------------------------------------
-
作者:
ydrzh (ydrzh)
★☆☆☆☆
-
普通会员
2018/4/24 21:08:35
18楼:
楼主这种方法提交更新,最终生成的SQL更新语句,where子句会包含所有未更新的列作为行定位条件,在多用户下太容易出错
----------------------------------------------
-
作者:
2018/4/24 22:34:44
19楼:
楼上,我没听明白。
----------------------------------------------
-
作者:
2018/4/25 19:08:42
20楼:
现有A、B两台服务器,都是win2008R2,但各自服务器角色、功能、安装的服务不同。 A:服务器datasnap rest、通讯用http,客户端用DSRestConnection1可连服务器; 服务器datasnap,通讯用tcpip,客户端用FDConnection,可连服务器。 B:服务器datasnap rest、通讯用http,客户端用DSRestConnection1,连接超时; 服务器datasnap,通讯用tcpip,客户端用FDConnection,可连服务器。 datasnap rest服务器应怎样配置,才能让客户端连接止?
----------------------------------------------
-
作者:
2018/4/26 10:28:03
21楼:
实质就一个http服务器,拿个chrome去调试一下都能知道什么问题了吧 :)
----------------------------------------------
good good study, day day up.
作者:
2018/4/26 14:33:18
22楼:
感谢楼上提示,其实应该是构建http服务器,需要什么软件环境。
----------------------------------------------
-
作者:
2018/4/26 14:56:50
24楼:
我想21楼的意思是你直接在浏览器输入Rest URL,然后就可以测试你的Rest服务器了,如果这都连不通,那你可以在服务端加log,有条件可以直接debug,看看服务端究竟收到连接请求没有. 引外,你可以装个Fiddler之类的工具,直接查看你的http包,这样方便调试。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2018/4/29 21:34:31
25楼:
谢谢楼上提醒,尽管很多名词都是第一次听到。
----------------------------------------------
-