三层中,如何把客户端更改了的数据更新回数据库。
我是把客户端的ADOQuery1.Recordset或ADODataSet1.Recordset作为参数传回给服务器的。
请问在服务器端更新的代码如何写?

解决方案 »

  1.   

    有这样传递参数的吗?
    我是把改变的数据,用数组传递的,然后在中间层生成sql语句来处理,sql语句存放在数据库中。我不赞成用数据感应控件。或者你在客户端生成sql语句来传递。
      

  2.   

    我主要是传输结果集。
    如果每个结果集都要自己生成数组传递,而且更新时还自己生成SQL,太麻烦。
      

  3.   

    老兄呀
    说了,你可别生气
    你这样做还叫三层数据库结构呀
    三层:
       应用服务器:ADOConnection1+adoquery+DataSetProvider1(简单),
                  另外你可以写一些方法等(启动ScktSrvr)
       客户端:    SocketConnection1或DCOMConnection1连接等,
                   +ClientDataSet1(写sql语句或传递参数)
    等。   
         
       
      

  4.   

    to chenquan(嘉威王子) 兄
    在我看来,以recordset作为参数传递和使用clientdataset1的delta包传递参数其实是类似的。其实我的recordset是由服务器产生,并传到客户端,当数据更改后,再传回服务器更新,对批量数据修改很方便。用recordset作为参数传递,可以使用recordset自己产生SQL语句,比TDataSetProvider方便(TDataSetProvider可能需要在beforeupdaterecord事件中写代码)。当然,比自己去组装SQL也方便的多。至于你说的ClientDataSet1(写sql语句或传递参数),那就是说SQL是由客户端发出的,那当SQL需要改变时,更新所有的客户端?当然,你可以说动态生成SQL,那是另一个话题了。delphi的MDIAS不是真正的N-tier结构,这个是不需要讨论的。
    我的问题已经解决了,谢谢你和soaringsouth(栈桥捉鳖)的参与。给分。呵呵。