在三层结构中,客户端增加、修改、删除记录,你们是采用什么方法。
1:调用应用服务器的方法。
2:调用ClientDataSet的Append、Edit、Delete等,那后ApplyUpdate
3:利用ClientDataSet的CommandText,直接写SQL语句。如果采用第2种方法,那么操作后可以在DataGrid中看最新的记录,如果采用1或3,那么ClientDataSet又需要重新Close、Open,这样又要从应用服务器下载数据,增加了网络传输量。请高手们谈谈。

解决方案 »

  1.   

    2:调用ClientDataSet的Append、Edit、Delete等,那后ApplyUpdate执行ClientDataSet.MergeChangeLog,
    ClientDataSet有两个属性,Data,DeltaData是修改前的数据
    Delta是修改的数据
    MergeChangeLog就是将二者合并;
      

  2.   

    请问:用第二种方法的话只要client端applyupdate就可以了么?server端还需要设置什么么?求教,我实现不了。
      

  3.   

    请问:
    使用2中的applyupdate更新是否一定成功?
    如不成功在客户端是否有提示?
      

  4.   

    我倒是正在用3层做一个大型软件,不过是用 Tuxedo 做中间件。对ClientDataSet都是用open,close
    因为ClientDataSet都是通常用来读取一些配置数据,数据量小。
    而且很少涉及 增,删,改的操作。
    其它大数据量的,或者有 增,删,改的操作的
    都是调应用服务器的Service实现。
      

  5.   

    我主要用clientdataset的commandtext,开发速度快
    如果直接调用应用程序服务器中的方法那肯定也是ok
      

  6.   

    if ClientDataSet1.ApplyUpdates(0)=0 then 成功
      

  7.   

    我用
        2:调用ClientDataSet的Append、Edit、Delete等,那后ApplyUpdate
      

  8.   

    long102:如果采用CommandText,那要显示修改后或新增的数据,不是又要重新“select * from tablename where ...”了。
      

  9.   

    我用2,但如果数据库用MS SQL,中间件用ADO连接,CLINETDATASET有参数的话,那么参数值不能是中文,不知大家有没有遇到这样的问题,怎样解决?
      

  10.   

    2:调用ClientDataSet的Append、Edit、Delete等,然后post,全部完成后ApplyUpdate。
      

  11.   

    用3,取数和更新都用SQL处理!
      

  12.   

    1、方法最合理,称得上三层极品。
    2、方法虽然从表面上是三层,但实际上跟两层没有太多的区别,尤其是从开发上说。利用ClientDataSet来处理数据库,这样操作省去了直接写SQL语句。这种方法处理数据库Append、Edit、Delete后,一定需要提交到服务器。ApplyUpdate。
    3、跟2没有太多的区别,就是这个人有病,自找麻烦。明显将数据处理放在客户端,可以用ClientDataSet来完成操作。自己写CommandText你不累呀~!不过这样可以省去了在服务器段放较少的提供者,客户端也并不需要太多的ClientDataSet。方法也有其存在的意义~!
      

  13.   

    wanderung(扬清):如果采用方法1,那么客户端要在DBGrid中看到新增或修改后的数据不是又要调用ClientDataSet的Close和Open,从应用服务器取数据,这样效率会好吗。
      

  14.   

    1。方法返回对数据的修改delta。在客户端合并