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取数,这时候是可以提交修改的,难道服务端每次响应客户端对应的事件后,都会关闭对应数据集的激活状态?

    <测试情况是这样的,暂时不了解实情>

 

posted @ 2012-10-12 17:31  耗喜天涯  阅读(262)  评论(0)    收藏  举报