DataSnap 2010 白皮书学习 (01)
以前在D7的环境下做三层,那是做惯了,
直接一个 AdoConnection 做连接, 再成套配置AdoDataset和DatasetProvider 就做成了服务端;
客户端的编制,直接一个 SocketConnection 做连接,成套的 Clientdataset和Datasource 做数据端;
在本博客内,将以如下简称做组件称呼
AdoConnection : AdoCon
SQLConnection: SQLCon
AdoDataSet : ADS
DatasetProvider: DSP
SocketConnection: SOC
ClientDataset: CDS
当前就相到了这些常用的(主要是D7下常用到的)
--------------------------------------------------------------------
今天装了XE3,就按他所谓的 DataSnap 先来熟悉一下三层的数据处理逻辑和方式(走DBX)
按白皮书的介绍做了第一个三层,在执行数据修改后提交的这一步,出现了一个问题:

经多次检测,发现原因点: ServerMethodsUnitDemo.pas 单元中,原来所配置的一个 SQLDataSet.ACTIVE 为激活状态;
(这个SQLDataSet在白皮书中是用来提取只读数据的<客户端通过SqlServerMethod来提取的>,在讲到提交数据这一块时,白皮书中是直接删除了原来的只读提取,转而使用
DSProviderConnection来处理,我为了省事,同时为了保留DEMO,所以就自己又加了一个SQLDataSet),所以在客户端提交数据时,会弹出上面的错误。
特殊情况:
如果在客户端先通过 SqlServerMethod 提取一次数据,然后再来用 DSProviderConnection 提取数据,修改,再提交时,就可以提交了,不会报错;
疑问:
1: 同一个SQLConnection在同一时间点,难道只能有一个对象与它连接? <从自己的测试情况来看,是这么回事. >
程序设计时,得注意一点: 将全部的 SQLDataSet.active 设置成 未激活状态;同时控制 SCon为未激活状态;
2: 先SqlServerMethod取数,再DSProviderConnection取数,这时候是可以提交修改的,难道服务端每次响应客户端对应的事件后,都会关闭对应数据集的激活状态?
<测试情况是这样的,暂时不了解实情>

浙公网安备 33010602011771号